导出Excel时在后台如何传数据集
导出Excel时在后台如何传数据集不用连数据库直接传数据集
给报表绑定数据源是通过调用Document.LocateDataSource方法。
如果不想重复执行此方法,需要在首次生成报表的Document 对象后,调用LocateDataSource完成后。将Document对象保存。
然后在导出Excel时,调用保存的Document对象。
数据不显示
本帖最后由 Lenka.Guo 于 2016-11-25 11:27 编辑
muhuiru 发表于 2016-11-25 09:59
数据不显示
您的代码看起来有点问题。
首先您使用上面的代码报表能正常加载吗?
按照下面的思路修改
PageReport rpt=new PageReport("报表路径");
Document.PageDocument rptd= new PageDocument(rpt);
rptd.LocateDataSource();
rptd.Render();
能否发个 在C#下具体实现的代码,多个数据集的
muhuiru 发表于 2016-11-28 10:19
能否发个 在C#下具体实现的代码,多个数据集的
先跟您确认下应用场景:
1. 您是一个报表中多个数据集还是 多个报表共同调用一个LocateDataSource 方法?
2. 想要实现的是运行时数据源导出Excel功能? 需要实现 一个报表中 有多个数据集时 , 运行时 是通过后台获取到的数据集导出EXCEL 码农 发表于 2016-11-28 11:53
需要实现 一个报表中 有多个数据集时 , 运行时 是通过后台获取到的数据集导出EXCEL
导出Excel与数据集的数量没有关系,只是要确认好导出的时间点。
1. 在LoadDataSource 方法后,调用ExportToExcel 方法:
GrapeCity.ActiveReports.PageReport rpt = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(@"RdlReport1.rdlx"));
GrapeCity.ActiveReports.Document.PageDocument rptd = new GrapeCity.ActiveReports.Document.PageDocument(rpt);
rptd.LocateDataSource += Rptd_LocateDataSource;
ExportToExcel(rptd);
2. 实现导出功能:
private void ExportToExcel(PageDocument document)
{
System.IO.DirectoryInfo outputDirectory = new System.IO.DirectoryInfo(@"D:\MyExcel");
outputDirectory.Create();
GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings excelSetting = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings();
excelSetting.FileFormat = GrapeCity.ActiveReports.Export.Excel.Page.FileFormat.Xls;
GrapeCity.ActiveReports.Extensibility.Rendering.ISettings setting = excelSetting;
GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension excelRenderingExtension = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension();
GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider outputProvider = new GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider(outputDirectory, System.IO.Path.GetFileNameWithoutExtension(outputDirectory.Name));
document.Render(excelRenderingExtension, outputProvider, excelSetting.GetSettings());
}
3. Rptd_LocateDataSource 方法
private void Rptd_LocateDataSource(object sender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args)
{
if (args.DataSourceName == "DataSource1")
{
switch(args.DataSetName)
{
case "DataSet1": args.Data = getDataSet1();break;
case "DataSet2": args.Data = getDataSet2();break;
case "DataSet3": args.Data = getDataSet3(); break;
}
}
}
按照你说的,我没有写出来,能否给个能运行的源码。 我发现实现导出的方法和你的有些不同 我这边自己有个打印按钮,那我需要触发什么事件,才能去调用你的ExportToExcel函数呢
页:
[1]
2