找回密码
 立即注册

QQ登录

只需一步,快速开始

gywm15111336483

银牌会员

3

主题

10

帖子

2635

积分

银牌会员

积分
2635

活字格认证

最新发帖
gywm15111336483
银牌会员   /  发表于:2014-12-24 15:33  /   查看:6987  /  回复:9
有没有FlashViewer以datatable为数据源的导出PDF,EXECL的列子啊, 为什么我在做导出的时候总是出这样的错误  发生了一个意外错误。更多信息: 'No data has been set. Please specify either a DataSet or a DataView to use

  1.   string url = @"RDLC/ADrugSale.rdlx";
  2.                 GrapeCity.ActiveReports.PageReport report1 = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(Server.MapPath(url)));
  3.                 //SetSelectedColumns(report1);
  4.                 report1.Document.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(Document_LocateDataSource);
  5.                 GrapeCity.ActiveReports.Document.PageDocument _reportRuntime = new GrapeCity.ActiveReports.Document.PageDocument(report1);

  6.                 GrapeCity.ActiveReports.Export.Excel.Page.ExcelTransformationDevice _renderingExtension = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelTransformationDevice();
  7.                 GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider _provider = new GrapeCity.ActiveReports.Rendering.IO.MemoryStreamProvider();
  8.                 GrapeCity.ActiveReports.Export.Excel.Page.Settings s = new GrapeCity.ActiveReports.Export.Excel.Page.Settings();

  9.                 _reportRuntime.Render(_renderingExtension, _provider, s);

  10.                 Response.ContentType = "application/vnd.ms-excel";
  11.                 Response.AddHeader("content-disposition", "attachment;filename=MyExport.xls");
  12.                 System.IO.MemoryStream ms = new System.IO.MemoryStream();
  13.                 _provider.GetPrimaryStream().OpenStream().CopyTo(ms);
  14.                 Response.BinaryWrite(ms.ToArray());
  15.                 Response.End();
复制代码

9 个回复

倒序浏览
gywm15111336483
银牌会员   /  发表于:2014-12-24 15:35:00
沙发
每次运行到了这样就
  1.   _reportRuntime.Render(_renderingExtension, _provider, s);
复制代码


出这样的错误  发生了一个意外错误。更多信息: 'No data has been set. Please specify either a DataSet or a DataView to use   ,我的数据源类型是datetable
回复 使用道具 举报
gywm15111336483
银牌会员   /  发表于:2014-12-24 15:36:00
板凳
最好是有FlashViewer以datatable为数据源的导出PDF,EXECL的列子
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-12-24 16:46:00
地板
回复 3楼gywm15111336483的帖子

请先参考博客文章尝试实现:
http://blog.gcpowertools.com.cn/ ... ze_flashviewer.aspx

有后续问题欢迎继续沟通。
谢谢
回复 使用道具 举报
gywm15111336483
银牌会员   /  发表于:2014-12-24 16:47:00
5#
我看的就你发的那个列子 ,用Datatable  就会有问题
回复 使用道具 举报
gywm15111336483
银牌会员   /  发表于:2014-12-24 16:48:00
6#
你不信  可以试试
回复 使用道具 举报
gywm15111336483
银牌会员   /  发表于:2014-12-24 16:51:00
7#
  1. protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             if (IsPostBack)
  4.             {
  5.                 return;
  6.             }
  7.             GrapeCity.ActiveReports.PageReport report1 = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(Server.MapPath("") + "\\PageReport1.rdlx"));
  8.             report1.Document.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(Document_LocateDataSource);
  9.             WebViewer1.PdfExportOptions.FitWindow = false;
  10.             WebViewer1.PdfExportOptions.DisplayMode = GrapeCity.ActiveReports.Export.Pdf.Section.DisplayMode.Outlines;
  11.             WebViewer1.Report = report1;
  12.             CustomizeToolBar();
  13.         }

  14.         private void CustomizeToolBar()
  15.         {
  16.             //设置显示语言版本为中文
  17.             this.WebViewer1.FlashViewerOptions.ResourceLocale = "zh_CN";

  18.             ToolButton btnWord = Tool.CreateButton("Word");
  19.             btnWord.ToolTip = "导出到 Word";
  20.             btnWord.Caption = "导出到 Word";
  21.             btnWord.ClickNavigateTo = "ARExport.ashx?exporttype=Word";
  22.             this.WebViewer1.FlashViewerToolBar.Tools.Add(btnWord);

  23.             ToolButton btnExcel = Tool.CreateButton("Excel");
  24.             btnExcel.ToolTip = "导出到 Excel";
  25.             btnExcel.Caption = "导出到 Excel";
  26.             btnExcel.ClickNavigateTo = "ARExport.ashx?exporttype=Excel";
  27.             this.WebViewer1.FlashViewerToolBar.Tools.Add(btnExcel);
  28.         }
  29.         void Document_LocateDataSource(object sender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args)
  30.         {
  31.             if (args.DataSourceName == "DataSource1")
  32.             {
  33.                 if (args.DataSetName == "DataSet1")
  34.                 {
  35.                     args.Data = GetDate();
  36.                 }
  37.             }
  38.         }
  39.         private DataTable GetDate()
  40.         {
  41.             DataTable dt = new DataTable();
  42.             dt.Columns.Add("Col1");
  43.             dt.Columns.Add("Col2");
  44.             dt.Columns.Add("Col3");
  45.             dt.Rows.Add(1, 1, 1);
  46.             dt.Rows.Add(2, 1, 1);
  47.             dt.Rows.Add(3, 1, 1);
  48.             dt.Rows.Add(4, 1, 1);
  49.             dt.Rows.Add(5, 1, 1);
  50.             dt.Rows.Add(6, 1, 1);
  51.             return dt;

  52.         }
复制代码

你看下 我的代码
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-12-24 17:16:00
8#
回复 3楼gywm15111336483的帖子

问题出现的原因在于 Service 中没有添加数据源,请参考附件 demo:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
gywm15111336483
银牌会员   /  发表于:2014-12-25 09:40:00
9#
Service 中没有添加数据源,有类似的写法没有
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-12-25 11:59:00
10#
回复 9楼gywm15111336483的帖子

有两个建议可以提供给您:
1.把数据源部分抽成一个类,在各个页面、包括Service 中公用。
2.或者可以把数据源存入到 Session 中,直接咋在 Service 中获取。

谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部