如何使用Apache POI 3.6在Excel表格中获得超过255列?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (229)

我在Excel中创建日历。第1列是01.01.2010(dd.MM.yyyy),第2列是02.01.2010等等。

这是我的代码:

int day_cell = 0;

for(int i = 0; i < days.size(); i++)
{
     Date day = days.get(i);

     HSSFCell cell = row.createCell(day_cell++);
     cell.setCellValue(day.toString());
}

当我到达第256列时,POI抛出这个异常:

java.lang.IllegalArgumentException: Invalid column index (256).  Allowable column range for BIFF8 is (0..255) or ('A'..'IV')
at org.apache.poi.hssf.usermodel.HSSFCell.checkBounds(HSSFCell.java:926)
at org.apache.poi.hssf.usermodel.HSSFCell.<init>(HSSFCell.java:162)
at org.apache.poi.hssf.usermodel.HSSFRow.createCell(HSSFRow.java:141)
at org.apache.poi.hssf.usermodel.HSSFRow.createCell(HSSFRow.java:119)

我发现这个错误报告表明它在3.6版本中得到修复。我们使用3.5,但改为3.6似乎没有任何好处。任何人有任何提示?

https://issues.apache.org/bugzilla/show_bug.cgi?id=46806

提问于
用户回答回答于

2007年以前的Excel表格有256列的限制。这些表格还生成“.xls”扩展名。Excel 2007及更高版本可以容纳16K列,基于XML格式并生成“.xlsx”格式。org.apache.poi.hssf.usermodel2007年以前的工作表的POI对象模型是2007年以后工作表中的对象模型。org.apache.poi.xssf.usermodel 该包org.apache.poi.ss.usermodel提供了一个覆盖两个对象模型的统一接口。因此,要创建超过256列,您必须使用org.apache.poi.xssf.usermodel包内或内部的类org.apache.poi.ss.usermodel

扫码关注云+社区

领取腾讯云代金券