EasyExcel对poi进行了封装,功能更加强大,操作简单,也可以通过注解,拦截器等形式添加样式合并单元格等。 public static final void exportSimpleExcel(HttpServletResponse response,List list,String fileName) throws IOException { //判断集合是否为空 if (ObjectUtils.isEmpty(list)){ throw new GlobalException(StatusCode.ERROR,"导出数据为空!"); } //判断文件名是否为空 if (StringUtils.isBlank(fileName)){ //文件名默认值 default fileName = "default"; } response.setContentType("application/octet-stream;charset=utf-8"); response.setHeader("Content-disposition","attachment;filename="+ URLEncoder.encode(fileName,"UTF-8")+ "."+ ExcelTypeEnum.XLS); EasyExcel.write(response.getOutputStream(),list.get(0).getClass()).sheet("模板").doWrite(list); } /** * 导出(通用) 基于easyexcel * @param list * @param fileName * @return * @throws IOException */ public static final String exportSimpleExcel(List list,String fileName) throws IOException { //判断集合是否为空 if (ObjectUtils.isEmpty(list)){ throw new GlobalException(StatusCode.ERROR,"导出数据为空!"); } //判断文件名是否为空 if (StringUtils.isBlank(fileName)){ //文件名默认值 default fileName = "default"; } String fileNames = TestFileUtils.getPath() + fileName + System.currentTimeMillis() + ".xlsx"; EasyExcel.write(fileNames,list.get(0).getClass()).sheet("模板").doWrite(list); return fileNames; } [title]下面是对拦截器的一些简单操作[/title] 在下面操作中 通过CellRangeAddress合并单元格 可以通过cell 获取行和列的索引 分别对不同单元格进行多样化的操作static class MergeStrategy extends AbstractMergeStrategy{ private Sheet sheet; private List list; public MergeStrategy(List list){ this.list = list; } @Override protected void merge(Sheet sheet, Cell cell, Head head, Integer integer) { this.sheet = sheet; if (cell.getRowIndex() == list.size()){ //合并单元格 横向 CellRangeAddress cellRangeAddress = new CellRangeAddress(list.size(), list.size(), 0, 6); sheet.addMergedRegionUnsafe(cellRangeAddress); } } }
easyexcel导出文件
发布于 2020-08-10 1374 次阅读
Comments | NOTHING