记一次导出过程中的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();