根据模板生成word文档替换变量报错

项目场景:

根据word文档合同模板替换变量。例如:
模板中有 签署日期:{{year}}年{{month}}月{{day}}日
在生成实际的合同文档时,year变量会替换2023,month替换成09,day替换成07。


问题描述

当格式不对,或者初创的文档用office软件编辑的,更改的时候用wps修改的。或者不同的人编辑了文档等等。这些可能会导致变量替换时报数据越界异常。特别是多个变量连在一块时会出现这种情况。
[2023-09-07 09:10:06.913] [ERROR] [http-nio-8080-exec-1] [com.WordUtils] - 生成文件有限公司【1号30期】认购协议.docx出错!
java.lang.StringIndexOutOfBoundsException: String index out of range: -52


原因分析:

经debug跟踪代码发现ParseWord07类中的方法parseThisParagraph在解析变量时,会将{{year}}年解析成
{{year}}年{{ ,这样会导致PoiPublicUtil.getRealValue中


```java
params = currentText.substring(currentText.indexOf("{{") + 2, currentText.indexOf("}}"));

这行代码报错。



# 解决方案:
在年月日的前后各加一个空格即可



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值