<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.4</version>
</dependency>
直接在实体类添加注解
@ColumnWidth(25)
@ExcelProperty("表头")
public static void download(HttpServletResponse response, String fileName, String sheetName, Class<?> clazz, List<?> data) throws IOException { fileName = StringUtils.isBlank(fileName) ? "文件" : fileName; sheetName = StringUtils.isBlank(sheetName) ? "sheet1" : sheetName; // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setCharacterEncoding("utf-8"); // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 fileName = URLEncoder.encode(fileName, "UTF-8").replace("\\+", "%20"); response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); EasyExcelFactory.write(response.getOutputStream(), clazz).sheet(sheetName).doWrite(data); }
自定义设置表头、数据、单元格长度
public static void PartitionEnergyAnalysis(HttpServletResponse response, String fileName, String sheetName, List<PartitionEnergyAnalysisDTO> data,Integer type) { try { response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setCharacterEncoding("utf-8"); fileName = URLEncoder.encode(fileName, "UTF-8").replace("\\+", "%20"); response .setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); List<List<String>> names = new ArrayList<>(); List<List<String>> values = new ArrayList<>(); names.add(Arrays.asList("分项名称")); names.add(Arrays.asList("时间")); names.add(Arrays.asList("本项用能")); names.add(Arrays.asList("上一年同期用能")); names.add(Arrays.asList("同比")); if(TimeDimensionEnum.Hour.getDimension()==type){ names.add(Arrays.asList("上一小时用能")); }else if(TimeDimensionEnum.DAY.getDimension()==type){ names.add(Arrays.asList("昨日用能")); }else if(TimeDimensionEnum.MONTH.getDimension()==type){ names.add(Arrays.asList("上一月用能")); } names.add(Arrays.asList("环比")); ExcelWriterBuilder writerBuilder = EasyExcel.write(response.getOutputStream()) .head(names) .registerWriteHandler(new SimpleColumnWidthStyleStrategy(25)); ExcelWriterSheetBuilder sheetBuilder = writerBuilder.sheet(sheetName); sheetBuilder.doWrite(values); } catch (Exception e) { throw new ServiceException(e.getMessage()); } }