使用 Hutool 工具类创建 Excel ,写出多个 Sheet,将其写出到客户端时下载后,文件中有空白的 Sheet 问题。如:
// 通过工具类创建writer,默认创建xls格式
ExcelWriter writer = ExcelUtil.getWriter();
//切换sheet
writer.setSheet("表1");
// 一次性写出内容,使用默认样式,强制输出标题
writer.write(rows1, true);
...
writer.setSheet("表2");
// 一次性写出内容,使用默认样式,强制输出标题
writer.write(rows2, true);
...
//response为HttpServletResponse对象
response.setContentType("application/vnd.ms-excel;charset=utf-8");
//test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
response.setHeader("Content-Disposition","attachment;filename=test.xls");
ServletOutputStream out=response.getOutputStream();
writer.flush(out, true);
// 关闭writer,释放内存
writer.close();
//此处记得关闭输出Servlet流
IoUtil.close(out);
解决办法:
重命名工作表名称即可。关键代码:writer.renameSheet("表1");
示例如下:
// 通过工具类创建writer,默认创建xls格式
ExcelWriter writer = ExcelUtil.getWriter();
// 重命名第一个工作表即可
writer.renameSheet("普通题");
// 一次性写出内容,使用默认样式,强制输出标题
writer.write(rows, true);
...
writer.setSheet("表2");
// 一次性写出内容,使用默认样式,强制输出标题
writer.write(rows, true);
...
//response为HttpServletResponse对象
response.setContentType("application/vnd.ms-excel;charset=utf-8");
//test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
response.setHeader("Content-Disposition","attachment;filename=test.xls");
ServletOutputStream out=response.getOutputStream();
writer.flush(out, true);
// 关闭writer,释放内存
writer.close();
//此处记得关闭输出Servlet流
IoUtil.close(out);