使用easyexcel下载复杂结构的excel文件(填充excel模板)

首先,看到复杂两个字,就知道有多复杂,那么到底有多复杂呢,让我们来看看有多复杂!

使用easyexcel下载复杂结构的excel文件(填充excel模板)_第1张图片

这是我们公司内部的一个需求,根据此模板把文件下载下来,对于我使用的这个模板我只截取了一部分,在这个模板中可以看到,不仅有合并单元格选项,也有一行中多个字段的情况,而且字段值对应字段的分布位置不统一,就是毫无规律可言。而对于这种复杂布局的模板,我们最直接最有效的方法就是使用albb的easyexcel的填充模板方法去实现!填充Excel | Easy Excel 官网

 我这个下载的需求是前后端分离的,功能实现主要在后端,前端就不展示了。 

ok 正片开始!

首先我们创建controller

@RestController
@Validated
@Api(value = "UploadAndDownloadExcelController", tags = "人员履历excel上传下载")
@RequestMapping("/system/excel")
public class UploadAndDownloadExcelController {

    @Autowired
    private UploadAndDownloadExcelService uploadAndDownloadExcelService;

    @PostMapping("/download/{userId}/{excelOrPdfFlag}")
    @ApiOperation(value = "下载excelOrPdf")
    public void downloadExcel(@PathVariable String userId, @PathVariable String excelOrPdfFlag, HttpServletResponse response) throws IOException {
        uploadAndDownloadExcelService.downloadExcel(userId, excelOrPdfFlag, response);
    }
}

(至于为什么用post请求,还要在路径上拼接字段,大家自行理解吧!主要是实现功能。excelOrPdfFlag参数大家可以不参考,主要是我这个需求还需要实现pdf下载!本节我们只讲excel就可。)

接下来我们来看实现

try (ExcelWriter excelWriter = EasyExcel.write(fileName).withTemplate(templateFileName).build()) {
                WriteSheet writeSheet = EasyExcel.writerSheet(0).build();
    String userName = detailSystemUserRecordVo.getUserName();
            String templateFileName = "D:\\技術経歴書模板.xlsx";
            String fileName = "D:\\excelOrPdf\\" + "人员履历_" + userName + ".xlsx";

            try (ExcelWriter excelWriter = EasyExcel.write(fileName).withTemplate(templateFileName).build()) {
                WriteSheet writeSheet = EasyExcel.writerSheet(0).build();
                // 提取用户基本信息
                Map rowData = MapUtils.newHashMap();

                rowData.put("pronunciation",detailSystemUserRecordVo.getPronunciation());
                rowData.put("userName", detailSystemUs

你可能感兴趣的:(excel,spring,boot,java,mybatis)