siberlee 发表于 2015-10-16 10:55:00

AR连续导出多次Excel数据为空

你好!
我们软件现在有一个需求,就是同一张表批量导出Excel。我的实现方法是依次取数据加载模板,再导出。但是发现AR在导出Excel时应该是异步处理的,我在导出的过程中加上信号量等同步,也没能够处理。附件中是我做的一个示例,请帮我看看,或者有没有其它方法,谢谢!


frank.zhang 发表于 2015-10-16 14:28:00

您好,

run的方法中,提供了异步的模式,可以参考AR的文档(下载中带的CHM文件)
Run(Boolean) Starts report execution and optionally keeps any linked viewer control document in sync with the report's document.   
Run() Starts the report processing in blocked mode.   

调整了初始化的顺序
      SectionReport1 report;
      public MainWindow()
      {
            InitializeComponent();
            report = new SectionReport1();
            report.DataSource = getData();
            report.DataMember = "Table";
            report.Run(false);
            this.MyView.LoadDocument(report);
      }

                  GrapeCity.ActiveReports.Export.Excel.Section.XlsExport XlsExport1 = new GrapeCity.ActiveReports.Export.Excel.Section.XlsExport();
                  XlsExport1.FileFormat = GrapeCity.ActiveReports.Export.Excel.Section.FileFormat.Xlsx;
                  XlsExport1.Export(report.Document, strName);

siberlee 发表于 2015-10-16 15:27:00

回复 2楼frank.zhang的帖子

你好,例子程序是用的SectionReport,请问PageReport也有这个同步机制吗?如果有,怎么实现。

frank.zhang 发表于 2015-10-16 15:58:00

您好,

目前没有RDL报表的例子程序,我可以给您制作一个例子程序,但是制作例子程序需要时间,我下周一给您回复。

frank.zhang 发表于 2015-10-19 11:37:00

您好,

RDL导出程序在代码上和区域报表不同,Render是AR9最新的导出excel的方法,做了很多优化
可以参考:
            GrapeCity.ActiveReports.PageReport report = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(@"..\..\RdlReport1.rdlx"));
            GrapeCity.ActiveReports.Document.PageDocument reportDocument = new GrapeCity.ActiveReports.Document.PageDocument(report);

            // Create an output directory
            System.IO.DirectoryInfo outputDirectory = new System.IO.DirectoryInfo(@".");
            outputDirectory.Create();

            // Provide settings for your rendering output.
            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;

            //Set the rendering extension and render the report.
            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, name);
            reportDocument.Render(excelRenderingExtension, outputProvider, excelSetting.GetSettings());


frank.zhang 发表于 2015-11-9 17:42:00

为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢

http://gcdn.gcpowertools.com.cn/attachment.aspx?attachmentid=10062

frank.zhang 发表于 2015-11-12 14:26:00

您好,

这个问题是否已经解决了呢?
我看您给我们的服务评价了1分,我们的服务是否有需要提高和改进的地方呢?
页: [1]
查看完整版本: AR连续导出多次Excel数据为空