anthony1119 发表于 2017-8-23 10:35:28

AR在winform中导出excel文件格式问题

1.导出excel之后格式变得错乱,莫名多出行和列,并且单元格没有合并。
2.报表导出到excel同一行数据超过页边导致本在同一页的数据分页显示。
3.同时导出矩表和饼状图到excel之后图形也会严重影响单元格间的排布。
以上问题还请帮忙定位解决,谢谢!附上我的例子

KearneyKang 发表于 2017-8-23 12:33:48

您好
我们的导出有两种方法一种就是您现在用的这种:filters的方法还有一种是 Rendering的方法
第一种方法由于是最先出的一个导出的方法可能有一定的局限性,最后我们又升级了一种办法也就是Rendering
我用Rendering方法进行测试问题解决
把button1_Click(object sender, EventArgs e)的代码修改为下面的代码:
   System.IO.DirectoryInfo outputDirectory = new System.IO.DirectoryInfo(@"D:\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;

            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));

            outputProvider.OverwriteOutputFile = true;

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

anthony1119 发表于 2017-8-23 13:19:04

KearneyKang 发表于 2017-8-23 12:33
您好
我们的导出有两种方法一种就是您现在用的这种:filters的方法还有一种是 Rendering的方法
第一种方 ...

单元格的问题解决了,但是一张连续的表导出来之后被分成了好几个sheet,并且左右超出的部分也被单独导出到不同的sheet中,这个要怎样处理呢?

anthony1119 发表于 2017-8-23 13:34:39

KearneyKang 发表于 2017-8-23 12:33
您好
我们的导出有两种方法一种就是您现在用的这种:filters的方法还有一种是 Rendering的方法
第一种方 ...

我的意思是假设创建的列太多,宽度超过了左右的范围,在RDL查看器中使用Galley Mode模式可以正常显示,但是导出Excel时仍然受宽度限制,超出的部分出现在下方而不是在右边完整显示,如图正常模式下显示:

Galley Mode下显示:


导出Excel结果:

KearneyKang 发表于 2017-8-23 14:02:41

如果是单独的报表导出的时候有一个Multisheet属性默认为true会进行一个自动的sheet分割,设置为false就不分割



如果是在代码中实现就可以通过代码设置该属性就可以了,具体代码如下:
private void button1_Click(object sender, EventArgs e)
      {         
            // Create an output directory.
            System.IO.DirectoryInfo outputDirectory = new System.IO.DirectoryInfo(@"D:\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;
<font color="#ff0000">            excelSetting.MultiSheet = false;</font>
            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));      
            outputProvider.OverwriteOutputFile = false;
         
            _document.Render(excelRenderingExtension, outputProvider, excelSetting.GetSettings());
      }

anthony1119 发表于 2017-8-23 14:12:18

KearneyKang 发表于 2017-8-23 14:02
如果是单独的报表导出的时候有一个Multisheet属性默认为true会进行一个自动的sheet分割,设置为false就不分 ...

我刚才补充了一下,分割sheet我已经找到了,但是重点是假如创建的列太多导致左右宽度超出,表格会被割开,虽然在同一个sheet中但是左右被割开分成上下排版,见我上面回复的图片,谢谢!

KearneyKang 发表于 2017-8-23 14:41:57

首先您要设置好您设计的报表的宽度,然后在正常情况下显示右侧不出现分页的情况,这样导出的时候就不会出现您说的情况了

anthony1119 发表于 2017-8-23 14:51:58

KearneyKang 发表于 2017-8-23 14:41
首先您要设置好您设计的报表的宽度,然后在正常情况下显示右侧不出现分页的情况,这样导出的时候就不会出现 ...

这种做法不太合理吧?Excel不可能说会在列数上有限制啊,那您的意思也就是说ActiveReport不支持自定义的宽度?超出了就没有任何办法让其正常显示?

anthony1119 发表于 2017-8-23 14:57:24

KearneyKang 发表于 2017-8-23 14:41
首先您要设置好您设计的报表的宽度,然后在正常情况下显示右侧不出现分页的情况,这样导出的时候就不会出现 ...

好吧我自己已经找到解决办法了,谢谢!

KearneyKang 发表于 2017-8-23 15:38:21

本帖最后由 KearneyKang 于 2017-8-23 15:40 编辑

好的,祝您工作愉快
页: [1]
查看完整版本: AR在winform中导出excel文件格式问题