可能出现如下报错信息:
解决方法:
1.先看看使用到的StyleID在style中是否有个定义,没有定义直接使用会报错。
上面用到的s21样式需要提前在Styles中定义好
2.检查Table的属性中是否包含这两种属性(ss:ExpandedRowCount ss:ExpandedColumnCount)
如果包含这这个属性,也可能导致报错,解决方法就是删除这两个属性。
3.单元格数据类型定义为数字,但是数据出现了字母或者跨行跨列的数字超了,也会导致报错。例如下面情况:
4.除了office打不开,还有种情况,比如一个sheet包含3张表数据,在wps中可以显示出3张表,而在office中只能看到一张表。这种情况可能是因为一个Worksheet标签里面只能有一个Table标签。如果有多个Table,可以写多个Worksheet或者把所有数据写在一个Table中。
例如下面这种情况就是有问题的:
正确的应该这样:
5.查看Table标签中有没有ExpandedColumnCount和ExpandedRowCount属性,有的话去掉,这两个属性会限制行和列的数量,容易引发报错。
6.如果有多个sheet,sheet的名字不能重复,否则可能引起报错(工作表设置)。
7.如果有合并单元格,则需要合并单元格的位置,不能多次赋值,且后面列的起始位置要用index指定。以下图为例:
A行的位置,需要指定MergeDown属性,用于设置跨多少行;
B行的位置,需要留空,不要赋值;
C行的位置,需要设置赋值的起始列为第三列;
实现代码参考:
8.MergeAcross、MergeDown的属性值不能为空,如果为空,则赋值为0,或者把整个属性去掉。
如果遇到了以上都没有出现过的问题,将Excel用编辑器打开,比如用vs打开,然后将其中的部分内容删掉,再打开Excel,看看是否正常显示,如果正常显示,说明是删掉的部分有问题,在逐步进行排查,直到找出问题的原因。出现打不开的原因,基本上就是某个标签或者语法office不支持,要么就是同一个单元格被多次赋值。
9.导出的Excel中,如果数字想实现千分位显示,需要使用xslt中格式化显示函数format-number进行操作。
而不能用样式进行格式控制,下面这种方式会导致Excel打不开:
************************************************ 分隔线 ****************************************************
导出的数据需合并单元格的处理办法:
导出的效果:前面两列单元格合并显示
部分代码:
实现思路:
1.后台查询数据时对公司字段进行分组排序,合并单元格的字段只循环一次。
2.从第三个字段开始,从第三列开始循环显示,不再从第一列赋值。