【发布时间】:2018-03-22 17:39:38
【问题描述】:
我一直在寻找方法来解决我在根据其中的内容自动调整列大小时遇到的这个问题。 在 windows 上本地部署应用程序时创建 Excel 文件没有任何问题。在 Unix 机器上部署应用程序后出现异常。我发现异常背后的autoSizeColumn() 方法。下面是我将所有数据添加到excel后的代码,抛出异常。
for (int colNum= 0; colNum <= 14; colNum++)
{
mySheet.autoSizeColumn(colNum);
}
例外:
java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 0
at sun.font.CompositeFont.getMapper(CompositeFont.java:410) ~[na:1.8.0-internal]
at sun.font.CompositeFont.canDisplay(CompositeFont.java:436) ~[na:1.8.0-internal]
at java.awt.Font.canDisplayUpTo(Font.java:2074) ~[na:1.8.0-internal]
at java.awt.font.TextLayout.singleFont(TextLayout.java:481) ~[na:1.8.0-internal]
at java.awt.font.TextLayout.<init>(TextLayout.java:542) ~[na:1.8.0-internal]
at org.apache.poi.ss.util.SheetUtil.getColumnWidth(SheetUtil.java:206) ~[poi-3.8.jar:3.8]
at org.apache.poi.hssf.usermodel.HSSFSheet.autoSizeColumn(HSSFSheet.java:1854) ~[poi-3.8.jar:3.8]
at org.apache.poi.hssf.usermodel.HSSFSheet.autoSizeColumn(HSSFSheet.java:1837) ~[poi-3.8.jar:3.8]
我在互联网上搜索后尝试了以下内容:
1.设置JVM参数-Djava.awt.headless=true
2.确保java\jre\lib\fonts中提供Arial字体
这无助于解决问题。
设置: 1. Websphere 9 2. poi3.8.jar
【问题讨论】:
-
请同时包含异常消息的第一行,而不仅仅是堆栈跟踪。
-
java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 0 -
起初,这似乎是
OpenJDK唯一的问题。SheetUtil.getColumnWidth需要Font来计算单元格内容的宽度。获取此Font在这里失败。使用搜索键sun.font.CompositeFont ArrayIndexOutOfBoundsException可以找到多个类似的错误。
标签: java apache-poi