poi 导出excel文件 报错 java.lang.ArrayIndexOutOfBoundsException: 0 数组越界

问题

现场环境poi导出excel文件时候报错java.lang.ArrayIndexOutOfBoundsException: 0,开发环境和测试环境都没有此问题。排查问题发现需要安装中文字体库,或者将SXSSFWorkbook改为HSSFWorkbook方式导出;
报错信息如下

java.lang.ArrayIndexOutOfBoundsException: 0
	at sun.font.CompositeFont.getSlotFont(CompositeFont.java:375)
	at sun.font.CompositeGlyphMapper.initMapper(CompositeGlyphMapper.java:81)
	at sun.font.CompositeGlyphMapper.<init>(CompositeGlyphMapper.java:62)
	at sun.font.CompositeFont.getMapper(CompositeFont.java:433)
	at sun.font.CompositeFont.canDisplay(CompositeFont.java:459)
	at java.awt.Font.canDisplayUpTo(Font.java:2063)
	at java.awt.font.TextLayout.singleFont(TextLayout.java:470)
	at java.awt.font.TextLayout.<init>(TextLayout.java:531)
	at org.apache.poi.ss.util.SheetUtil.getDefaultCharWidth(SheetUtil.java:285)
	at org.apache.poi.xssf.streaming.AutoSizeColumnTracker.<init>(AutoSizeColumnTracker.java:117)
	at org.apache.poi.xssf.streaming.SXSSFSheet.<init>(SXSSFSheet.java:89)
	at org.apache.poi.xssf.streaming.SXSSFWorkbook.createAndRegisterSXSSFSheet(SXSSFWorkbook.java:701)
	at org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheet(SXSSFWorkbook.java:722)
	at com.arcvideo.amam.utils.ExportUtils.makeExcelSheet(ExportUtils.java:133)

2:两种解决方法

方法1: linux中安装中文字体库

1、查看中文字体
fc-list :lang=zh

2、安装字体
#安装字体库
yum -y install fontconfig	
#安装字体的索引信息
yum -y install ttmkfdir	mkfontscale	
可拷贝Windows的字体目录:C:\Windows\Fonts

3、linux字体目录:/usr/share/fonts,建议创建一个目录mkdir chinese 放中文字体

4、把字体上传到/usr/share/fonts/chinese目录

5、然后在/usr/share/fonts/chinese执行命令,生成字库索引信息
mkfontscale
mkfontdir

6、更新字体缓存
fc-cache

方法2:因为现场环境不联网无法安装字体库,所以修改了导出方式,将SXSSFWorkbook改为HSSFWorkbook导出

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值