KearneyKang 发表于 2017-10-27 13:28:58

您好!关于导出Excel,如果您不想通过前台触发,然后您可以把导出实现的方法写在您需要实现的后台代码里就行。导出Excel 的方法就是这个方法。
private void tsbExportToExcel_Click(object sender, EventArgs e)
      {   
            // 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, System.IO.Path.GetFileNameWithoutExtension(outputDirectory.Name));

            // Overwrite output file if it already exists.
            outputProvider.OverwriteOutputFile = true;

            reportDocument.Render(excelRenderingExtension, outputProvider, excelSetting.GetSettings());         
      }还有您说的关于参数传值的问题,您是想传参数给报表是吧,哪你设计的报表就应该是参数报表。然后需要给您设计的报表传递一个参数。
后台参数这样传递:
                   definition = (PageReport)base.OnCreateReportHandler(reportPath);               
                  definition.Report.ReportParameters.DefaultValue.Values.Add("123");                  








lunew 发表于 2018-1-4 16:16:22

hi Kearney, 之前因为一直忙其他的,这个暂停了,但问题其实还没解决
看了你给的例子,但你的方法好像只能写在 ActiveReports.ReportService.asmx.cs文件里是么
我们的项目里有好多的报表,只有一个报表有这个需求(不能影响其他报表),而且需要在其他的.cs文件中写调用导出的方法,但把例子里的方法拿到外面后无法编译通过,更无法运行,应该怎么做呢

KearneyKang 发表于 2018-1-4 17:54:31

您好!
导出Excel的方法就只有我提供的这几种办法。如果只有一个报表有这种需求,您可以写一个判断语句来进行判断执行。


lunew 发表于 2018-1-23 11:58:45

hi, 我们参考http://blog.gcpowertools.com.cn/post/ExportRender.aspx 这个帖子里的第二种Render方法,可以从后台调用报表输出文件,文件可以输出,但数据却是空的,无论用rdlx中自带的数据源(sqlserver)还是自己制定数据源都不行,后台调用方法如下,rdlx文件随便用哪个都一样结果,麻烦请帮忙看一下是哪里的问题,谢谢!

      public override void Execute(ServiceParamater paramater)
      {

            GrapeCity.ActiveReports.PageReport definition1 = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(@"C:\WorkSpace\aliyun\TPMSJF - 副本\WebUI\TPM.WebMVC\Reports\ReportActivityDetail.rdlx"));
            definition1.Run();
            //definition1.Report.DataSources.DataSourceReference = "";
            //definition1.Report.DataSources.ConnectionProperties.DataProvider = "SQL";
            //definition1.Report.DataSources.ConnectionProperties.ConnectString = string.Format("Data Source=192.168.1.220;Initial Catalog=TPM_SJF_Develop;User Id=sa;pwd=sa");
            GrapeCity.ActiveReports.Document.PageDocument _reportRuntime = new GrapeCity.ActiveReports.Document.PageDocument(definition1);
            //_reportRuntime.LocateDataSource += new LocateDataSourceEventHandler(Document_LocateDataSource);
            //PageReport definition1 = (PageReport)base.OnCreateReportHandler(Server.MapPath("~/Reports/ReportActivityDetail.rdlx"));
            ExportToPdf(definition1.Document);
      }

      private void ExportToPdf(PageDocument pageDocument)
      {
            System.IO.DirectoryInfo outputDirectory = new System.IO.DirectoryInfo(@"C:\Demo");
            outputDirectory.Create();


            // Provide settings for your rendering output.
            GrapeCity.ActiveReports.Export.Pdf.Page.Settings pdfSetting = new GrapeCity.ActiveReports.Export.Pdf.Page.Settings();
            GrapeCity.ActiveReports.Extensibility.Rendering.ISettings setting = pdfSetting;

            //Set the rendering extension and render the report.
            GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension pdfRenderingExtension = new GrapeCity.ActiveReports.Export.Pdf.Page.PdfRenderingExtension();
            GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider outputProvider = new GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider(outputDirectory, System.IO.Path.GetFileNameWithoutExtension(outputDirectory.Name));
            pageDocument.Render(pdfRenderingExtension, outputProvider, pdfSetting, true);


      }

KearneyKang 发表于 2018-1-23 12:24:54

您好您把报表在设计的时候直接绑定数据源,然后用下面这种Render导出的方法试试:
GrapeCity.ActiveReports.PageReport report = new GrapeCity.ActiveReports.PageReport();GrapeCity.ActiveReports.Document.PageDocument reportDocument = new GrapeCity.ActiveReports.Document.PageDocument(report);

// Create an output directory.
System.IO.DirectoryInfo outputDirectory = new System.IO.DirectoryInfo(@"C:\MyExcel");
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, System.IO.Path.GetFileNameWithoutExtension(outputDirectory.Name));

// Overwrite output file if it already exists.
outputProvider.OverwriteOutputFile = true;

reportDocument.Render(excelRenderingExtension, outputProvider, excelSetting.GetSettings());


lunew 发表于 2018-1-23 13:56:31

上面你给出来的代码和例子里有区别么,例子里的代码我们试过,导出的文件无数据,你的可以成功吗能否给个例子
我们的rdlx报表在设计时绑定了共享数据源,比如如附件的报表,换一个报表结果也是一样的

KearneyKang 发表于 2018-1-23 16:07:29

您好!我这边试了是可以的。我是绑定的动态数据源验证的,导出的Excel文件是有数据的
调式运行成功后,点击下面截图的导出按钮。

lunew 发表于 2018-1-25 14:25:14

终于试好了,非常感谢!

KearneyKang 发表于 2018-1-26 10:07:34

好的!祝您工作愉快:)
页: 1 [2]
查看完整版本: AR10, 如何从后台调用获取导出的excel文件