使用Apache POI生成Excel模板时如何在创建文件时自动展示全部列
问题原因
- Apache POI的
XSSFSheet.setColumnWidth(int columnIndex, int width)方法第二个参数的单位为1/256个字符宽度,你当前代码直接传入目标字符宽度数值,实际列宽仅为预期的1/256,宽度过小就会呈现为列隐藏的效果。
修复方案
将循环中设置列宽的代码做如下修改,把目标字符宽度乘以256转换为方法要求的单位即可:
// 原代码 // currentSheet.setColumnWidth(i, fileToSTGCellValues_Widths.get(fileToSTGCellValues_Names[i])); // 修改后代码 currentSheet.setColumnWidth(i, fileToSTGCellValues_Widths.get(fileToSTGCellValues_Names[i]) * 256);
如果需要更精准的列宽适配,也可以在写入所有单元格后调用currentSheet.autoSizeColumn(i)方法自动适配每列宽度,但该方法性能相对较低,你有明确固定列宽需求的话直接按上述方法修改即可。
内容的提问来源于stack exchange,提问作者Aleksandar Kuzmov
相关产品推荐
相关产品推荐

