poi 导出 java.lang.IllegalArgumentException: Text length was 302 but the last format index was 314

记一次导出过程中的java.lang.IllegalArgumentException

异常栈:

java.lang.IllegalArgumentException: Text length was 302 but the last format index was 314 
	at org.apache.poi.xssf.usermodel.XSSFRichTextString.buildCTRst(XSSFRichTextString.java:589) 
	at org.apache.poi.xssf.usermodel.XSSFRichTextString.applyFont(XSSFRichTextString.java:157)   

背景:

我在Excel导出代码中使用了自定义设置字体功能,其中指定的字符串是:

笔记本没声音了如何恢复 该方法使用惠普暗影精灵2代,Win10系统所演示;方法一;1.首先要检查一下是不是硬件问题;2.排除了连接错误和硬件损坏之后,检查电脑是否打开了静音,3.若打开了静音则点击关闭即可;方法二;1.在“我的电脑”单击鼠标右键;2.点击“管理”;3.打开“设备管理器”;4.接着打开“声音、视频和游戏控制器”列表;5.检查音频驱动是否被禁用;6.右键单击被禁用的驱动;7.点击“启用设备”;8.若还是不行,右键单击驱动选择“扫描检测硬件改动”即可;方法三;1.下载并打开“驱动人生”;2.点击“立即体验”;3.检查声卡驱动是否需要安装或升级_x0003__x0017_ #科技 #it #笔记本没声音了如何恢复

通过三个参数:(字体起始位置,终止位置,该位置应该设置的字体)来个原本的字符串增加字体
在这里插入图片描述

直接原因:

apache.poi.XSSFRichTextString类中有一段对字符串进行转义的过程,我原文中提到的_x0003__x0017_,就直接被转义了,从而导致字符串长度与原文match不上
在这里插入图片描述
在这里插入图片描述

解决方案:

提前自行对字符串进行转义,eg:columnResult = new XSSFRichTextString(columnResult).getString();

PS:What’s x0003__x0017

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值