【问题标题】:Why Apache POI autoSizeColumn does not work in Websphere9 on unix?为什么 Apache POI autoSizeColumn 在 unix 上的 Websphere9 中不起作用?
【发布时间】: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


【解决方案1】:

这是包xorg-x11-fonts-Type1 xorg-x11-font-utils 卸载后的问题,更新了font.properties 文件,并将字体添加到JAVA。谢谢大家。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多