apache poi excel 大自动列宽

2022-09-03 16:59:13

我正在尝试创建一个大的excel 2010,其中包含30列和100万条记录,其中包含Apache poi latest。我正在创建,如此链接中所述 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的堆大小,我也在内存不足。

谢谢

公羊


答案 1

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

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

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

for(int colNum = 0; colNum<row.getLastCellNum();colNum++)   
    wb.getSheetAt(0).autoSizeColumn(colNum);

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


答案 2

我还建议你看看使用sxssf。它使用 xml 格式将其加载到 Excel 中。这要快得多,也是创建大型报表或网格的更好方法。默认情况下,xssf 中的自动调整大小函数花费的时间太长。


推荐