freemarker根据模板生成word文档,换行

freemarker根据模板生成word文档,其它地方已经说的非常清除了,在此简单再说以下。

1、制作word模板,另存为xml文件。在此我另存为的时windows xml,它和windows 2003 xml有细微差别,但差别不大。权衡之下,我选择的是前者。

2、用word打开这个文件,先对里面需要填写的一个变量进行替换,然后保存退出。再用编辑器打开这个文件,找到刚才的那个自己填写的变量,会发现word自动把这个整体分开了,那么把中间那些多余的字符全部删掉,保存退出。在用word打开这个文档,剪切刚才那个变量,在原地粘贴一份,然后在其它需要变量替换的地方都粘贴一份,再把那些变量名字改一下,保存。此时退出应该已经模板已经制作好了,这个模板尽量不要改动,否则只要改动一个地方,那么那个${abc}就有可能再次被且分开。

此处虽然文字稍多,但是如果按照这种做法,在这一步还是能省很大功夫的。否则需要在满屏这样的字符中去找变量合并。

3、就是在程序中运行,进行变量替换然后输出了。在此又遇到一个问题就是换行的问题。因为在前台写的时候考虑到这个word对某些字符不容,所以用的只是textarea,但是再生成word的时候无法换行。

 经查阅资料推测,textarea的换行符应该是"\n",而模板中的换行符推测是“<w:p></w:p>”,于是在程序中改成

dataMap.put("plan", task.getStr("plan").replaceAll("\r\n", "<w:p></w:p>"));

此时输出的文档中已经像在textarea中显示的一样换行了。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值