freemarker导出excel时office报错而wps不会

由于excel模板是客户提供的,并且较复杂,所以采用freemarker导出会轻松很多。
第一次用freemarker按照网上教程(我用的是WPS):
参考资料
1、先用excel画好模板然后另存为xml。这里用wps轻松搞定,用office则需要自己写xml模板然后映射到excel上面。
2、把.xml改成.ftl。ftl是freemarker模板的格式。
3、往模板里头写数据,写完后在把 ftl 改回 xls 或者 xlsx,完成。
就这样很顺利的写了好几个导出excel功能,用wps也能正常打开,没多想就更新上去了,结果收到用户反馈office打不开。
编辑excel一堆xml代码,稍微看得懂,但是不知道哪个地方导致offic
总结如下:
1、如果 ss:ExpandedRowCount 这边设置的行数值小与实际行数则报错,相应的 ss:ExpandedColumnCount  列数一样,可以
      通过传参设置大小(比如ss:ExpandedRowCount="${dataList?size + 10}")。
2、<cell> 里头的 <data>设置类型时如果 百分比数据不小心设置成 ss:Type="Number",则会报错,改为String 可以解决。
3、涉及到列合并时,行是动态增加的,此时合并列后面的那些列需要加上 ss:Index=""用于指定列的位置,否则会报错,比如这样子就是正常的

e解析不了,一头雾水,只好逐块删代码测试。

<Cell ss:StyleID="s60">  
    <Data ss:Type="String">${data.bzsbl}</Data>  
</Cell>  
<#if data_index+1=1>  
    <Cell ss:StyleID="s59" ss:MergeDown="${listSize}">  
        <Data ss:Type="String">${data.hotel1}</Data>  
    </Cell>  
    <Cell ss:StyleID="s61" ss:MergeDown="${listSize}">  
        <Data ss:Type="String">${data.hotel2}</Data>  
    </Cell>  
    <Cell ss:StyleID="s61" ss:MergeDown="${listSize}">  
        <Data ss:Type="String">${data.hotel3}</Data>  
    </Cell>  
</#if>  
<Cell ss:StyleID="s62" ss:Index="16">  
    <Data ss:Type="String">${data.szcnt}</Data>  
</Cell> 

4、ss:ExpandedColumnCount="" 这边设置的列数要跟<Column/>个数一至,否则会报错,比如这样子就是正常的(Row也是同理)

<Table ss:ExpandedColumnCount="10" ss:ExpandedRowCount="104"  
    x:FullColumns="1" x:FullRows="1" ss:DefaultColumnWidth="54"  
    ss:DefaultRowHeight="13.5">  
    <Column ss:StyleID="s64" ss:AutoFitWidth="0" ss:Width="91.5" />  
    <Column ss:StyleID="s64" ss:AutoFitWidth="0" ss:Width="125.25" />  
    <Column ss:StyleID="s64" ss:AutoFitWidth="0" ss:Width="93" />  
    <Column ss:StyleID="s64" ss:AutoFitWidth="0" ss:Width="81" />  
    <Column ss:StyleID="s64" ss:AutoFitWidth="0" ss:Width="83.25" />  
    <Column ss:StyleID="s64" ss:AutoFitWidth="0" ss:Width="87" />  
    <Column ss:StyleID="s64" ss:AutoFitWidth="0" ss:Width="84.75" />  
    <Column ss:StyleID="s64" ss:AutoFitWidth="0" ss:Width="85.5" />  
    <Column ss:StyleID="s64" ss:AutoFitWidth="0" ss:Width="95.25" />  
    <Column ss:StyleID="s64" ss:AutoFitWidth="0" ss:Width="140.25" />   
 </Table>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值