我是使用wps创建excel后另存为xml格式,再将xml后缀改为ftl
导出功能做好后发现使用wps打开excel没问题,但是office打开报错,
查看excel错误日志之后就知道问题出在哪了(打开excel报错后会提示错误日志路径,你直接按路径去找是找不到的,直接C盘搜索日志名字就好)
ss:ExpandedRowCount=“1” 这个是行数,行数小于实际行数会报错,要么写尽量大,
如:ss:ExpandedRowCount=“9999”
<Worksheet ss:Name="Sheet1">
<Table ss:ExpandedColumnCount="9999" ss:ExpandedRowCount="9999" x:FullColumns="1" x:FullRows="1" ss:StyleID="s50" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="19.5" >
要么就写成动态的,
比如:ss:ExpandedRowCount="${dataList?size + 10}"
dataList为数据集合
<Worksheet ss:Name="Sheet1">
<Table ss:ExpandedColumnCount="9999" ss:ExpandedRowCount="${dataList?size + 10" x:FullColumns="1" x:FullRows="1" ss:StyleID="s50" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="19.5" >
我还出现另一个是数据类型的错误:
<Data ss:Type="Number">序号</Data>
类型为数字,给的值却是字符串,也会导致office打不开,将Number改为String即可解决:
<Data ss:Type="String">序号</Data>
此外,如果ftl模板做好了,发现某一列宽度不够,怎么办?改这里:
<Column ss:Index="1" ss:StyleID="Default" ss:AutoFitWidth="0" ss:Width="288"/>
index是第几列,更改ss:Width值就可以
设置自动换行:ss:WrapText=“1”
设置自适应行高:ss:AutoFitHeight=“1”
示例代码:
<Style ss:ID="s51">
<Alignment ss:Horizontal="Center" ss:Vertical="Center" ss:WrapText="1"/>
</Style>
<Row ss:AutoFitHeight="1">
<Cell ss:StyleID="s51">
<Data ss:Type="String">${items.content}</Data>
</Cell>
</Row>
至于ss:AutoFitWidth,研究了半天还是没有效果,要是各位前辈指导用法的话,还请告诉一下,谢谢了啊
PS:这篇博客写的很详细freemarker导出excel时office报错而wps不会