直接上代码
// 设置响应类型
log.info("导出文件:-----Start-------------");
BigExcelWriter writer = ExcelUtil.getBigWriter();
try {
//设置单元格样式
CellStyle cellStyle = writer.getCellStyle();
//创建标题字体
Font font = writer.createFont();
font.setFontName("宋体");
cellStyle.setFont(font);
//全局 宽15
writer.setColumnWidth(-1, 15);
writer.setColumnWidth(0, 20);
//全局 高25
writer.setRowHeight(-1, 25);
//设置表头
for (key, value in colMap) {
writer.addHeaderAlias(key, value);
}
writer.write(infoList);
response.setHeader("content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
// 设置字符编码
response.setHeader("characterEncoding", "utf-8");
// 设置响应头信息
response.setHeader("content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf-8") + ".xlsx");
writer.flush(response.getOutputStream(), true);
response.end();
} catch (e) {
log.error("写出文件异常:{}", e.message)
} finally {
infoList.clear();
writer.close()
log.info("导出文件:-----End-------------");
}
之前使用下面这段代码,解析文件后,文件内容为空,因为读取不到sheet的rid
ExcelUtil.readBySax(ins, 0, rowHandler);
ins.close();
改正后为,读取-1位的sheet就可以获取到文件内容了。
ExcelUtil.readBySax(ins, -1, rowHandler);
ins.close();
参考博客原文博客:BigExcelWriter 写出的文件 ExcelUtil无法读取内容_excelutil.readbysax_H and G的博客-CSDN博客