893559686 发表于 2017-3-27 09:41:35

ActiveReports批量导出到Excel问题

本帖最后由 893559686 于 2017-3-27 09:45 编辑

1.想问一下,批量导出到报表可以使用,GrapeCity.ActiveReports.Viewer.Win.Viewer 进行批量的导出吗?按照下面的写法,出现了一个错误,Operation is not supported for section report,所以想问下:

GrapeCity.ActiveReports.PageReport _repPage = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(aPath));

                  GrapeCity.ActiveReports.Document.PageDocument _reportRuntime = new GrapeCity.ActiveReports.Document.PageDocument(_repPage);
                  _reportRuntime.LocateDataSource += (send, args) =>
                  {
                        object reportData = null;
                        if (item.ReportDataSourceDic != null)
                            reportData = item.ReportDataSourceDic.Where(i => i.Key.Equals(args.DataSetName)).FirstOrDefault().Value;
                        args.Data = reportData;
                  };

GrapeCity.ActiveReports.Viewer.Win.Viewer ReportViewer = new GrapeCity.ActiveReports.Viewer.Win.Viewer();
ReportViewer.LoadDocument(_reportRuntime);

GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings Settings = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings();
GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension RenderingExtension = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension();

StreamProvider StreamProvider = new FileStreamProvider(new DirectoryInfo(Path.GetDirectoryName(aExportPath)), Path.GetFileNameWithoutExtension(aExportPath));
ReportViewer.Render(RenderingExtension, StreamProvider, Settings.GetSettings());

2.之前是按照下面的方式批量导出的,但是出现一个问题,同一张报表,用GrapeCity.ActiveReports.Viewer.Win.Viewer 和GrapeCity.ActiveReports.Export.Excel.Section.XlsExport 分别导出,导出的样式不一样,GrapeCity.ActiveReports.Viewer.Win.Viewer 的导出方式样式是没有问题的。
string aNewFileName = string.Empty;//新文件 string aPath = RegSettings.ReportPath + item.Path + item.FileName;//报表路径
GrapeCity.ActiveReports.PageReport _repPage = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(aPath));         
GrapeCity.ActiveReports.Document.PageDocument _reportRuntime = new GrapeCity.ActiveReports.Document.PageDocument(_repPage);
_reportRuntime.LocateDataSource += (send, args) =>
{                     
    object reportData = null;
   if (item.ReportDataSourceDic != null)
         reportData = item.ReportDataSourceDic.Where(i => i.Key.Equals(args.DataSetName)).FirstOrDefault().Value;
   args.Data = reportData;
};
aNewFileName = item.Name + aFileSuffix;
GrapeCity.ActiveReports.Export.Excel.Section.XlsExport xlsExport1 = new GrapeCity.ActiveReports.Export.Excel.Section.XlsExport();   
xlsExport1.FileFormat = GrapeCity.ActiveReports.Export.Excel.Section.FileFormat.Xlsx;
string aExportPath = aTempFolder + "\\" + aNewFileName;
xlsExport1.Export(_reportRuntime, aExportPath);





Lenka.Guo 发表于 2017-3-27 11:08:08

1. AR 提供的导出方法主要有两种:Rendering Extensions 和Export Filters, Rendering Extensions只针对PageReport 和RDL Report, 而ExportFilters 支持三种报表类型

2. Export Filters 和Rendering Extensions 是两种导出方法,如果是页面报表或RDL 报表推荐使用Rendering Extensions.

893559686 发表于 2017-3-27 13:20:34

Lenka.Guo 发表于 2017-3-27 11:08
1. AR 提供的导出方法主要有两种:Rendering Extensions 和Export Filters, Rendering Extensions只针对 ...
谢谢,使用GrapeCity.ActiveReports.Document.PageDocument.Render() 方式导出报表样问题得到解决。

Lenka.Guo 发表于 2017-3-27 13:51:05

谢谢反馈~奖励1000金币
页: [1]
查看完整版本: ActiveReports批量导出到Excel问题