EasyExcel 非注解方式設置列寬行高的幾種實現方式
public static <T> void exportDownBoxExcel(String fileName, String sheetName,Class<T> t, String titleName, List<List<String>> headers, HttpServletResponse response, Map<Integer, List<String>> selectMap,List<T> dataList, boolean isExportNullField) {
ServletOutputStream outputStream = null;
try {
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
// 這里URLEncoder.encode可以防止中文亂碼 當然和easyexcel沒有關系
String fileNameEncode = URLEncoder.encode(fileName, "UTF-8");
response.setHeader("Content-disposition", "attachment;filename=" + fileNameEncode + ExcelTypeEnum.XLSX.getValue());
outputStream = response.getOutputStream();
EasyExcelFactory.write(outputStream, t)
.registerWriteHandler(new SelectSheetWriteHandler(selectMap))
//設置表頭樣式
.registerWriteHandler(getHorizontalCellStyleStrategy())
// 重寫AbstractColumnWidthStyleStrategy策略的setColumnWidth方法
.registerWriteHandler(new AbstractColumnWidthStyleStrategy() {
@Override
protected void setColumnWidth(WriteSheetHolder writeSheetHolder, List<CellData> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
Sheet sheet = writeSheetHolder.getSheet();
int columnIndex = cell.getColumnIndex();
// 列寬16
sheet.setColumnWidth(columnIndex, (short) 16);
}
})
.excelType(ExcelTypeEnum.XLSX)
// .head(headers)
.sheet(sheetName)
.doWrite(dataList);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (outputStream != null) {
outputStream.flush();
outputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
我是個雙魚座的小王子,沉浸在自己的代碼世界里,去探索這未知的世界,希望遇到更多的小伙伴一起前行!

浙公網安備 33010602011771號