| 2019.3.21 | java |
// 必须在单元格设值以后进行
// 设置为根据内容自动调整列宽
for (int k = 0; k < dataStrList .size(); k++) {
sheet.autoSizeColumn(k);
}
// 处理中文不能自动调整列宽的问题
this.setSizeColumn(sheet, dataStrList.size());
我们使用autoSizeColumn方法可以把Excel设置为根据内容自动调整列宽,然而这个方法对中文并不起效,只对数字和字母有效;
可以在其后再加入这个方法;
// 自适应宽度(中文支持)
private void setSizeColumn(XSSFSheet sheet, int size) {
for (int columnNum = 0; columnNum < size; columnNum++) {
int columnWidth = sheet.getColumnWidth(columnNum) / 256;
for (int rowNum = 0; rowNum < sheet.getLastRowNum(); rowNum++) {
XSSFRow currentRow;
// 当前行未被使用过
if (sheet.getRow(rowNum) == null) {
currentRow = sheet.createRow(rowNum);
} else {
currentRow = sheet.getRow(rowNum);
}
if (currentRow.getCell(columnNum) != null) {
XSSFCell currentCell = currentRow.getCell(columnNum);
if (currentCell.getCellType() == XSSFCell.CELL_TYPE_STRING) {
int length = currentCell.getStringCellValue().getBytes().length;
if (columnWidth < length) {
columnWidth = length;
}
}
}
}
sheet.setColumnWidth(columnNum, columnWidth * 256);
}
}
更新列表:
*
参考文章:
[2]: [3]: [4]: