apache poi excel大自动列宽

我尝试使用Apache poi最新创建一个包含30列和100万条记录的大型excel 2010。 我正在创建此链接中的描述http://svn.apache.org/repos/asf/poi/trunk/src/examples/src/org/apache/poi/xssf/usermodel/examples/BigGridDemo.java 。 但我希望列宽与列标题文本大小相同。 但是在使用以下代码创建excel之后我正在执行此操作

for (int x = 0; x < sheet.getRow(0).getPhysicalNumberOfCells(); x++) { sheet.setColumnWidth(x, 20*256); } 

它占用了大量的时间,即使有5GB的堆大小,我也会失去记忆。

谢谢

内存

首先选择第一行或标题,因为只有Header可以为您提供一行中的最大单元格数。

 HSSFRow row = wb.getSheetAt(0).getRow(0); 

然后在该行的每一列上使用autoSizeColumn

 for(int colNum = 0; colNum 

这将设置列宽与其标题宽度相同。

我还建议你看一下使用sxssf。 它使用xml格式将其加载到Excel中。 这是更快,更好的方法来创建大型报表或网格。 默认情况下,xssf中的自动调整function时间过长。

sheet.autoSizeColumn(columnNumber)有效。 这会将列调整为最大单元格长度。