calihone 发表于 2018-3-9 17:19:47

ActiveReport如何导出报表到excel和word

问题如题,由于ActiveReport报表中view工具栏是无法增添新的工具,如何在其中新增两个按钮并实现将报表导出到excel和word?

KearneyKang 发表于 2018-3-13 10:44:03

不好意思!粘贴错了。汗// Provide the page report you want to 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:\MyWord");
outputDirectory.Create();

// Provide settings for your rendering output.
GrapeCity.ActiveReports.Export.Word.Page.Settings wordSetting = new GrapeCity.ActiveReports.Export.Word.Page.Settings();

// Set the FileFormat property to .OOXML.
wordSetting.FileFormat = GrapeCity.ActiveReports.Export.Word.Page.FileFormat.OOXML;

// Set the rendering extension and render the report.
GrapeCity.ActiveReports.Export.Word.Page.WordRenderingExtension wordRenderingExtension = new GrapeCity.ActiveReports.Export.Word.Page.WordRenderingExtension();
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(wordRenderingExtension, outputProvider, wordSetting);   

KearneyKang 发表于 2018-3-9 17:29:21

您好!
导出按钮是可以通过自定义进行编写的,效果图

具体可以参考如下博客:
http://blog.gcpowertools.com.cn/post/WinForm-Export.aspx

calihone 发表于 2018-3-12 13:52:59

KearneyKang 发表于 2018-3-9 17:29
您好!
导出按钮是可以通过自定义进行编写的,效果图



功能实现了,不过个人建议如果能有个图形化设计界面就更好了,另外这个designer最好不要在里面写入代码,不然界面只要有些许改动或者编译就会导致它自动生成新的文件,原来增加的代码会消失。给出的参考链接中,第二种导出excel没有路径,没有测试出来,第一种方式是好用的,但是希望使用自己可随意选择的文件夹目录,如果在文件夹下选择某个XXX.xls进行覆盖后,就会出现问题,如果不覆盖,生成一个不存在的文件时,它会在该选择目录下生成一个和文件名相同的目录,这个问题如何解决?

KearneyKang 发表于 2018-3-13 09:31:03

您好!
winform导出添加按钮目前就是这种办法。然后导出Excel的文件的路径就是在该路径:
System.IO.DirectoryInfo outputDirectory = new System.IO.DirectoryInfo(@"D:\MyExcel");我给您的demo导出和打印我测试都是可以正常运行的,只不过导出的Excel 文件在这个文件下D:\MyExcel

KearneyKang 发表于 2018-3-13 10:25:51

您好!
这是导出Word的主要的实现代码
// Provide the page report you want to 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());


calihone 发表于 2018-3-13 10:57:28

KearneyKang 发表于 2018-3-13 10:44
不好意思!粘贴错了。汗

不好意思刚才回复提交半天没反应就多次点击了,然后响应了之后就一下子重复提交了。这个word所在的程序集名称是什么呀?我找了没找到,我看名称应该是GrapeCity.ActiveReports.Export.Rdf.v12程序集,但是这个包含进去也是不行的,请告诉我确切包含的程序集名称,谢谢

KearneyKang 发表于 2018-3-13 15:12:28

本帖最后由 KearneyKang 于 2018-3-27 17:53 编辑

您好,所有的引用地址如下:
C:\Program Files (x86)\Common Files\GrapeCity\ActiveReports 12
您说的应该是这个:



页: [1]
查看完整版本: ActiveReport如何导出报表到excel和word