在reporting services中经常会为了计算而将报表导出为,但往往会出现合并单元格的问题。下面介绍几种解决办法以供参考。

1.将表格单独放在body中。报表名称和其它所有内容放在page header 和page footer中,在导出excel时加上参数SiplePageHeaders=true.这样每次导出只是按照表的格式导出数据,即不会存在合并单元格的问题了,也可将此参数添加到报表服务器的配置文件中,这样只要配置一次就可以不用再考虑合并单元格的问题。代码如下:

URL调用:

http://reporthost/reportserver/folder....&rs:Format=EXCEL&rc:SimplePageHeaders=true

在报表的最后面加上&rs:Format=EXCEL&rc:SimplePageHeaders=true

修改配置文件:

默认在

C:\Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer目录下面找到文件:rsreportserver.config 。找到<Render></Render>节点,在<Extension>节点后面添加如下内容或者修改Name=“Excel"的<Extension>节点为如下内容:

 

 
  
  1. <Extension Name="EXCEL2" Type="Microsoft.ReportingServices.Rendering.ExcelRenderer.ExcelRenderer,Microsoft.ReportingServices.ExcelRendering"> 
  2.                 <OverrideNames> 
  3.                     <Name Language="en-US">EXCEL (only Data)</Name> 
  4.                 </OverrideNames> 
  5.                 <Configuration> 
  6.                     <DeviceInfo> 
  7.                         <SimplePageHeaders>true</SimplePageHeaders> 
  8.                     </DeviceInfo> 
  9.                 </Configuration> 
  10.             </Extension> 
2.

2.用厘米或者像素替换默认单位英寸。

某些时候,你在自动对齐的时候明明已经显示为0points但还是会出现合并单元格或者隐藏的合并单元格。出现这种问题是因为默认对齐的label长可能为x.xxxxxxin,这就导致在导出为excel时将这个长度进行进位。所以最好用厘米或者像素来代替英寸。用厘米时可以精确到毫米是没有问题的。用像素直接用整数也是不会有问题。但相对来说比较繁琐,每次都要计算label的长度进行手动调节。

3.放弃table和matrix,改用List。

如果感觉以上两个方法都行不通的话,那你只有放弃用table, matrix和tablix了。直接用textbox也是一种选择,但相应报表开发的工作量就要比较大了。

以上三种方法都可以解决合并单元格的问题。如有其它好的方法,欢迎交流。