编写导出工具类中的通用导出方法时,用easyPoi导出的excel打开会出现一条绿线,一开始以为是默认style类导致的问题,后来发现是默认会窗口冻结第一行,在excel的视图里可以取消窗口冻结,但是我们要在导出的时候就去除掉
获取sheet对象,编辑createFreezePane方法,去除窗口冻结也可以加上
java
/**
* 这个是通用的easyPoi有对象导出方式
* @param response HttpServletResponse
* @param type 导出excel后缀类型
* @param fileName 导出文件名
* @param clazz 列表中的类型对象
* @param list 导出列表
* @throws Exception
*/
public static <T> void easyPoiObjectToExcel(HttpServletResponse response, String type, Class<T> clazz, String fileName, List<T> list) throws IOException {
if (type.equals("csv")) {
response.setContentType("text/csv");
} else if (type.equals("dbf")) {
response.setContentType("application/x-dbf");
} else if (type.equals("xls")) {
response.setContentType("application/vnd.ms-excel");
} else {
//默认xlsx
type = "xlsx";
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
}
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName + "." + type, "utf-8"));
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
try {
ExportParams exportParams = new ExportParams(fileName, "Sheel1");
exportParams.setStyle(ExcelStylesUtil.class);
// 生成workbook 并导出
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, clazz, list);
//获取sheet对象
Sheet sheet = workbook.getSheetAt(0);
//去除窗口冻结
sheet.createFreezePane(0,0);
workbook.write(response.getOutputStream());
workbook.close();
} catch (IOException e) {
e.printStackTrace();
outputErrorJson(response, e.getMessage());
}
}
本文作者:Weee
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!