java - apache poi excel 大自动列宽

标签 java apache-poi out-of-memory big-o

我正在尝试使用最新的 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/

相关文章:

vb.net - vb.net 应用程序出现 OutOfMemoryException

java - 如何处理大字符串和有限的内存

Java 正则表达式包装器

java - LinearLayout - 在 TextView 之后添加 TableLayout

java - 为什么查询时参数是String,String也会转成Long

java - 将下面的单链表转换为双向链表

java - 使用 java Apache POI 将数据库数据存储到 Excel 工作表中

java - 使用 Apache POI 将文档转换为 pdf

java - 如何在 HSSF apache poi (JAVA) 上克隆具有相关引用的函数

c# - 并行调整图像大小导致内存不足异常