easypoi的excel导出自适应列宽
时间: 2023-11-19 08:07:20 浏览: 77
asypoi是一款Java的excel导入导出工具,它提供了自适应列宽的功能。下面是两种实现方法:
方法一:在本地的BaseExportService中重写setCellWith方法,代码如下:
```java
public void setCellWith(List<ExcelExportEntity> excelParams, Sheet sheet) {
for (int i = 0; i < excelParams.size(); i++) {
sheet.autoSizeColumn(i);
sheet.setColumnWidth(i, sheet.getColumnWidth(i) * 17 / 10); // 中文宽度
//设置最小宽度,防止title字符过短导致内容折叠显示,体验不佳
int minWidth = excelParams.get(i).getName().length() * 1600; if (sheet.getColumnWidth(i) < minWidth)
sheet.setColumnWidth(i, minWidth);
// 无数据额外处理
}
}
```
方法二:直接调用setSizeColumn方法即可,代码如下:
```java
// 自适应宽度(中文支持)
private void setSizeColumn(Sheet sheet) {
int maxColumn = sheet.getRow(0).getPhysicalNumberOfCells();
for(int i = 0; i < maxColumn; i++){
sheet.autoSizeColumn(i);
}
for (int i = 0; i < maxColumn; i++) {
int orgWidth = sheet.getColumnWidth(i);
sheet.autoSizeColumn(i, true);
int newWidth = (int) (sheet.getColumnWidth(i) + 100);
int maxWith = 256*255; //限制下最大宽度
if(newWidth > maxWith) {
sheet.setColumnWidth(i, maxWith);
}else if (newWidth > orgWidth) {
sheet.setColumnWidth(i, newWidth);
} else {
sheet.setColumnWidth(i, orgWidth);
}
}
}
```