excel导出java.lang.ArrayIndexOutOfBoundsException: 0 POI导出excel报错数组下标越界0

好久没写博客了,最近是有点懒了。。。
最近项目遇到个问题,用poi导出excel,本地和测试服务器都没问题,线上所有的导出都不能用,排查过JKD版本和配置文件都没问题,百思不得其解,最终问了朋友考虑到可能是字体方面的问题,安装字体最终解决。
贴上报错

16:16:14 [http-nio-10003-exec-7] ERROR c.develop.common.utils.poi.ExcelUtil - 导出Excel异常0
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:273)
        at org.apache.poi.xssf.streaming.AutoSizeColumnTracker.<init>(AutoSizeColumnTracker.java:117)
        at org.apache.poi.xssf.streaming.SXSSFSheet.<init>(SXSSFSheet.java:82)
        at org.apache.poi.xssf.streaming.SXSSFWorkbook.createAndRegisterSXSSFSheet(SXSSFWorkbook.java:684)
        at org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheet(SXSSFWorkbook.java:676)
        at org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheet(SXSSFWorkbook.java:88)
        at com.develop.common.utils.poi.ExcelUtil.createSheet(ExcelUtil.java:835)
        at com.develop.common.utils.poi.ExcelUtil.exportExcel(ExcelUtil.java:281)
        at com.develop.common.utils.poi.ExcelUtil.exportExcel(ExcelUtil.java:256)

字体安装看这个链接,权限问题注意别忘记了 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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
layui是一款基于jQuery的前端UI框架,它提供了丰富的组件和功能,包括导出Excel功能。在layui中,可以使用table.exportFile()方法来实现导出Excel的功能。 具体步骤如下: 1. 引入layui框架和相关样式文件。 2. 创建一个表格,并使用layui的table组件进行渲染。 3. 在需要导出Excel的按钮点击事件中,调用table.exportFile()方法来导出Excel文件。 下面是一个示例代码: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>layui导出Excel示例</title> <link rel="stylesheet" href="https://cdn.staticfile.org/layui/2.5.6/css/layui.css"> </head> <body> <table id="demo" lay-filter="test"></table> <script src="https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js"></script> <script src="https://cdn.staticfile.org/layui/2.5.6/layui.js"></script> <script> layui.use(['table', 'excel'], function(){ var table = layui.table; var excel = layui.excel; // 渲染表格 table.render({ elem: '#demo', url: '/api/getData', // 数据接口 cols: [[ {field: 'id', title: 'ID'}, {field: 'name', title: '姓名'}, {field: 'age', title: '年龄'} ]] }); // 导出Excel按钮点击事件 $('#exportBtn').on('click', function(){ var data = table.cache['test']; // 获取表格数据 excel.exportExcel({ sheet1: data }, '导出数据.xlsx', 'xlsx'); }); }); </script> </body> </html> ``` 在上述示例代码中,我们使用了layui的table组件来渲染表格,并通过url参数指定了数据接口。在导出Excel按钮的点击事件中,我们调用了excel.exportExcel()方法来导出Excel文件,其中的sheet1参数是要导出的数据,'导出数据.xlsx'是导出的文件名,'xlsx'是文件格式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值