当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何使用ApachePOI3.6在Excel工作表中获得超过255列》经验,为你挑选了3个好方法。

我在excel中创建日历.第1列是2010年1月1日(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.(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

编辑:似乎错误问题是关于公式..



1> 小智..:

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



2> Ed Harper..:

您的问题可能是Excel,而不是您的API.

Excel 2007之前的电子表格中的最大列数为256.



3> Tommy..:

我想到了.我不得不从org.apache.poi.hssf.usermodel切换 到org.apache.poi.ss.usermodel

这允许您使用16k列或类似的东西.


@ kk1010的回答提供了对"为什么"的更好解释.
推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有