找回密码
 立即注册

QQ登录

只需一步,快速开始

anthony1119

初级会员

6

主题

25

帖子

200

积分

初级会员

积分
200
anthony1119
初级会员   /  发表于:2017-8-23 10:35  /   查看:4488  /  回复:9
1.导出excel之后格式变得错乱,莫名多出行和列,并且单元格没有合并。
2.报表导出到excel同一行数据超过页边导致本在同一页的数据分页显示。
3.同时导出矩表和饼状图到excel之后图形也会严重影响单元格间的排布。
以上问题还请帮忙定位解决,谢谢!附上我的例子

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

9 个回复

倒序浏览
KearneyKang讲师达人认证 悬赏达人认证
超级版主   /  发表于:2017-8-23 12:33:48
沙发
您好
我们的导出有两种方法一种就是您现在用的这种:filters的方法还有一种是 Rendering的方法
第一种方法由于是最先出的一个导出的方法可能有一定的局限性,最后我们又升级了一种办法也就是Rendering
我用Rendering方法进行测试问题解决
把button1_Click(object sender, EventArgs e)的代码修改为下面的代码:
  1.    System.IO.DirectoryInfo outputDirectory = new System.IO.DirectoryInfo(@"D:\MyExcel");
  2.             outputDirectory.Create();

  3.             // Provide settings for your rendering output.
  4.             GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings excelSetting = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings();
  5.             excelSetting.FileFormat = GrapeCity.ActiveReports.Export.Excel.Page.FileFormat.Xls;
  6.             GrapeCity.ActiveReports.Extensibility.Rendering.ISettings setting = excelSetting;

  7.             GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension excelRenderingExtension = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension();
  8.             GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider outputProvider = new GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider(outputDirectory, System.IO.Path.GetFileNameWithoutExtension(outputDirectory.Name));

  9.             outputProvider.OverwriteOutputFile = true;

  10.             _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结果:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
KearneyKang讲师达人认证 悬赏达人认证
超级版主   /  发表于:2017-8-23 14:02:41
5#
如果是单独的报表导出的时候有一个Multisheet属性默认为true会进行一个自动的sheet分割,设置为false就不分割



如果是在代码中实现就可以通过代码设置该属性就可以了,具体代码如下:
  1. private void button1_Click(object sender, EventArgs e)
  2.         {           
  3.             // Create an output directory.
  4.             System.IO.DirectoryInfo outputDirectory = new System.IO.DirectoryInfo(@"D:\MyExcel");
  5.             outputDirectory.Create();

  6.             // Provide settings for your rendering output.
  7.             GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings excelSetting = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtensionSettings();
  8.             excelSetting.FileFormat = GrapeCity.ActiveReports.Export.Excel.Page.FileFormat.Xls;
  9. <font color="#ff0000">            excelSetting.MultiSheet = false;</font>
  10.             GrapeCity.ActiveReports.Extensibility.Rendering.ISettings setting = excelSetting;

  11.             GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension excelRenderingExtension = new GrapeCity.ActiveReports.Export.Excel.Page.ExcelRenderingExtension();
  12.            
  13.             GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider outputProvider = new GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider(outputDirectory, System.IO.Path.GetFileNameWithoutExtension(outputDirectory.Name));        
  14.             outputProvider.OverwriteOutputFile = false;
  15.          
  16.             _document.Render(excelRenderingExtension, outputProvider, excelSetting.GetSettings());
  17.         }
复制代码


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
anthony1119
初级会员   /  发表于:2017-8-23 14:12:18
6#
KearneyKang 发表于 2017-8-23 14:02
如果是单独的报表导出的时候有一个Multisheet属性默认为true会进行一个自动的sheet分割,设置为false就不分 ...

我刚才补充了一下,分割sheet我已经找到了,但是重点是假如创建的列太多导致左右宽度超出,表格会被割开,虽然在同一个sheet中但是左右被割开分成上下排版,见我上面回复的图片,谢谢!
回复 使用道具 举报
KearneyKang讲师达人认证 悬赏达人认证
超级版主   /  发表于:2017-8-23 14:41:57
7#
首先您要设置好您设计的报表的宽度,然后在正常情况下显示右侧不出现分页的情况,这样导出的时候就不会出现您说的情况了
回复 使用道具 举报
anthony1119
初级会员   /  发表于:2017-8-23 14:51:58
8#
KearneyKang 发表于 2017-8-23 14:41
首先您要设置好您设计的报表的宽度,然后在正常情况下显示右侧不出现分页的情况,这样导出的时候就不会出现 ...

这种做法不太合理吧?Excel不可能说会在列数上有限制啊,那您的意思也就是说ActiveReport不支持自定义的宽度?超出了就没有任何办法让其正常显示?
回复 使用道具 举报
anthony1119
初级会员   /  发表于:2017-8-23 14:57:24
9#
KearneyKang 发表于 2017-8-23 14:41
首先您要设置好您设计的报表的宽度,然后在正常情况下显示右侧不出现分页的情况,这样导出的时候就不会出现 ...

好吧我自己已经找到解决办法了,谢谢!
回复 使用道具 举报
KearneyKang讲师达人认证 悬赏达人认证
超级版主   /  发表于:2017-8-23 15:38:21
10#
本帖最后由 KearneyKang 于 2017-8-23 15:40 编辑

好的,祝您工作愉快
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部