freemarker导出excel使用office打不开的解决办法(查看excel错误日志,修改对应错误)

我是使用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不会

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值