找回密码
 立即注册

QQ登录

只需一步,快速开始

muhuiru

社区贡献组

65

主题

203

帖子

580

积分

社区贡献组

积分
580

活字格认证

muhuiru
社区贡献组   /  发表于:2016-11-24 16:01  /   查看:6101  /  回复:12
导出Excel时在后台如何传数据集
不用连数据库直接传数据集

本帖子中包含更多资源

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

x

12 个回复

倒序浏览
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-11-24 17:05:46
沙发
给报表绑定数据源是通过调用Document.LocateDataSource方法。
如果不想重复执行此方法,需要在首次生成报表的Document 对象后,调用LocateDataSource完成后。将Document对象保存。

然后在导出Excel时,调用保存的Document对象。
回复 使用道具 举报
muhuiru
社区贡献组   /  发表于:2016-11-25 09:59:17
板凳

数据不显示

本帖子中包含更多资源

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

x
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-11-25 11:22:21
地板
本帖最后由 Lenka.Guo 于 2016-11-25 11:27 编辑

您的代码看起来有点问题。
首先您使用上面的代码报表能正常加载吗?
按照下面的思路修改
PageReport rpt=new PageReport("报表路径");
Document.PageDocument rptd= new PageDocument(rpt);
rptd.LocateDataSource();
rptd.Render();

回复 使用道具 举报
muhuiru
社区贡献组   /  发表于:2016-11-28 10:19:54
5#
能否发个 在C#下具体实现的代码,多个数据集的
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-11-28 10:27:28
6#
muhuiru 发表于 2016-11-28 10:19
能否发个 在C#下具体实现的代码,多个数据集的

先跟您确认下应用场景:
1. 您是一个报表中多个数据集还是 多个报表共同调用一个LocateDataSource 方法?

2. 想要实现的是  运行时数据源导出Excel功能?
回复 使用道具 举报
码农
注册会员   /  发表于:2016-11-28 11:53:02
7#
需要实现 一个报表中 有多个数据集时 , 运行时 是通过后台获取到的数据集导出EXCEL
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-11-28 14:18:48
8#
码农 发表于 2016-11-28 11:53
需要实现 一个报表中 有多个数据集时 , 运行时 是通过后台获取到的数据集导出EXCEL

导出Excel与数据集的数量没有关系,只是要确认好导出的时间点。

1. 在LoadDataSource 方法后,调用ExportToExcel 方法:

  1. GrapeCity.ActiveReports.PageReport rpt = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(@"RdlReport1.rdlx"));
  2.             GrapeCity.ActiveReports.Document.PageDocument rptd = new GrapeCity.ActiveReports.Document.PageDocument(rpt);
  3.             rptd.LocateDataSource += Rptd_LocateDataSource;
  4.             ExportToExcel(rptd);
复制代码


2. 实现导出功能:


  1. private void ExportToExcel(PageDocument document)
  2.         {
  3.             System.IO.DirectoryInfo outputDirectory = new System.IO.DirectoryInfo(@"D:\MyExcel");
  4.             outputDirectory.Create();

  5.             GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings excelSetting = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings();
  6.             excelSetting.FileFormat = GrapeCity.ActiveReports.Export.Excel.Page.FileFormat.Xls;
  7.             GrapeCity.ActiveReports.Extensibility.Rendering.ISettings setting = excelSetting;
  8.             GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension excelRenderingExtension = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension();
  9.             GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider outputProvider = new GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider(outputDirectory, System.IO.Path.GetFileNameWithoutExtension(outputDirectory.Name));
  10.             document.Render(excelRenderingExtension, outputProvider, excelSetting.GetSettings());




  11.         }
复制代码



3. Rptd_LocateDataSource 方法

  1. private void Rptd_LocateDataSource(object sender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args)
  2.         {
  3.             if (args.DataSourceName == "DataSource1")
  4.             {
  5.                 switch(args.DataSetName)
  6.                 {

  7.                     case "DataSet1": args.Data = getDataSet1();break;
  8.                     case "DataSet2": args.Data = getDataSet2();break;
  9.                     case "DataSet3": args.Data = getDataSet3(); break;

  10.                 }

  11.            

  12.             }

  13.             
  14.         }
复制代码


回复 使用道具 举报
码农
注册会员   /  发表于:2016-11-28 20:22:26
9#
按照你说的,我没有写出来,能否给个能运行的源码。 我发现实现导出的方法和你的有些不同
回复 使用道具 举报
码农
注册会员   /  发表于:2016-11-28 20:36:56
10#
我这边自己有个打印按钮,那我需要触发什么事件,才能去调用你的ExportToExcel函数呢
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部