首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Apache POI 3.6获取超过255列的excel表格

如何使用Apache POI 3.6获取超过255列的excel表格
EN

Stack Overflow用户
提问于 2010-02-24 22:28:51
回答 5查看 33.8K关注 0票数 19

我正在用excel创建日历。第一列是01.01.2010 (dd.MM.yyyy),第二列是02.01.2010,依此类推。

这是我的代码:

代码语言:javascript
复制
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抛出此异常:

代码语言:javascript
复制
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)

我发现这个bug报告表明它已经在3.6版本中修复了。我们使用的是3.5版,但更改为3.6版似乎没有任何好处。有人有什么建议吗?

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

编辑:似乎bug问题是关于公式的..

EN

回答 5

Stack Overflow用户

发布于 2011-08-05 00:00:17

2007年前的excel表格有256列的限制。这些工作表还会生成".xls“扩展名。Excel2007和更高版本可以容纳16K列,都是基于XML格式并生成".xlsx“格式。2007年之前的工作表的POI对象模型是org.apache.poi.hssf.usermodel,而2007年以后的工作表的对象模型是org.apache.poi.xssf.usermodel,package org.apache.poi.ss.usermodel提供了涵盖这两种对象模型的统一接口。因此,要创建256个以上的列,必须在org.apache.poi.xssf.usermodel包或org.apache.poi.ss.usermodel中使用类。

票数 27
EN

Stack Overflow用户

发布于 2010-02-24 22:39:02

您的问题可能出在Excel,而不是您的API。

The maximum number of columns in a pre-Excel 2007 spreadsheet is 256

票数 9
EN

Stack Overflow用户

发布于 2010-02-24 22:37:16

您可能会考虑从纵向切换到横向(换句话说,调换数据),这样您就可以在一年中的每一天使用65k行。这正是我对一个需要大量列和少量行的报告所做的。

或者,您可以将一年分成6个月的子期间,每个子期间都有自己的工作表。

这些都是权宜之计,但根据您的需求,可能会为您提供一个“足够好”的解决方案。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2326668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档