Apache POI 3.17中无法调用trackAllColumnsForAutoSizing()方法,求所属库及调用方式
关于
trackAllColumnsForAutoSizing()方法的依赖疑问解答 嘿,我来帮你解决这个问题!你现在找不到trackAllColumnsForAutoSizing()方法,核心原因是这个方法是Apache POI 4.0.0版本才新增的API,而你当前使用的3.17版本里根本没有这个方法。
关键细节说明:
- 在POI 3.17的
SXSSFSheet类中,并没有提供trackAllColumnsForAutoSizing()这个方法——它是后续版本为了优化SXSSF的列宽自动调整逻辑(解决大数据量下自动列宽不准确的问题)才添加的。 - 如果你一定要使用这个方法,必须把项目里的POI相关依赖版本升级到4.0.0或更高,比如4.1.2、5.2.3这类稳定版本都可以。
升级后的Maven依赖示例:
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>4.1.2</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-scratchpad</artifactId> <version>4.1.2</version> </dependency>
临时替代方案(不想升级版本时):
要是你暂时没法升级POI版本,想要实现类似的自动调整列宽效果,可以手动遍历所有列调用autoSizeColumn(i),不过要注意:必须等所有数据都写入工作表之后再执行这个操作,否则列宽可能计算不准确:
SXSSFWorkbook workbook = new SXSSFWorkbook(); Sheet sheet = workbook.getSheetAt(0); // 先完成所有数据的写入逻辑 // ... // 遍历列调整宽 for (int colIndex = 0; colIndex < sheet.getRow(0).getLastCellNum(); colIndex++) { sheet.autoSizeColumn(colIndex); }
附上你提供的示例截图:
内容的提问来源于stack exchange,提问作者Ishani Samaraweera
相关产品推荐
相关产品推荐

