我正在尝试使用最新的 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,我也会出现内存不足的情况。
谢谢
内存
最佳答案
首先选择第一行或标题,因为只有标题可以为您提供一行中的最大单元格数。
HSSFRow row = wb.getSheetAt(0).getRow(0);
然后对该行的每一列使用autoSizeColumn
for(int colNum = 0; colNum<row.getLastCellNum();colNum++)
wb.getSheetAt(0).autoSizeColumn(colNum);
这会将列宽设置为与其标题宽度相同。
关于java - apache poi excel 大自动列宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20190317/