java根据模板生成docx文件的方法(原创)

第一次在CSDN发博,编辑器使用的不熟练,如大家感觉排版上有影响视觉的问题,欢迎私信或留言指出。

使用freemarker可以很方便的生成xml格式的doc文件,操作很简单,在word中写好需生成的文件,其中需替换的变量使用${}包裹,然后保存为xml格式,最后在java中开发代码读取数据并使用freemarker就可以生成需要的doc文件。然而,这个doc文件是xml格式的,部分手机上无法打开正常阅读。本文所要说的是如何生成在手机上可以查看的docx文件以及在其中增加图片。

继续刚才的操作,在word中保存为xml格式的同时保存为docx格式备用。使用文本编辑器打开xml文件,再使用网上的“xml格式化”工具将xml文件格式化。格式化后,查找其中的$符,可以看到,大多数的$都没有和{相邻,需要手工进行修改。修改为类似于这样的(避免无法被freemarker识别):

<w:r>
  <w:rPr>
    <w:rFonts w:asciiTheme="minorHAnsi" w:eastAsiaTheme="minorHAnsi" w:hAnsiTheme="minorHAnsi" w:hint="eastAsia"/>
  </w:rPr>
  <w:t>${dataabc}</w:t>
</w:r>

此时,xml文件依然可以使用word打开,但如果进行了下面的修改操作,word将无法打开此类文件,所以,如果今后需求发生变化需要修改模板时,以上步骤需要从头再来一次。

如果文件中有需要循环显示的内容(比如一个表格的行需要动态增加),需要手工修改xml文件的内容,在需要循环的内容前加入

<#list datas as onedata>

在结束位置加入

</#list>

最终效果类似于(这个例子是需要循环显示数据的表格。为减少篇幅,删除了一些不重要的内容,如需完整版请参考下载的附件):

<#list datas as onedata>
      <w:tr w:rsidR="00B925F3" w:rsidRPr="003E2683" w14:paraId="3CF1874A" w14:textId="77777777" w:rsidTr="00B925F3">
        <w:tc>
          <w:p w14:paraId="136DB865" w14:textId="478A8BA5" w:rsidR="00B925F3" w:rsidRPr="003E2683" w:rsidRDefault="00B925F3" w:rsidP="00DA2894">
            <w:r w:rsidRPr="003E2683">
              <w:rPr>
                <w:rFonts w:asciiTheme="minorHAnsi" w:eastAsiaTheme="minorHAnsi" w:hAnsiTheme="minorHAnsi" w:hint="eastAsia"/>
                <w:sz w:val=
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值