java 通过Excel模板导出复杂的Excel格式数据

接口导出Excel的时候,Excel的格式有时候很复杂,包含图片,字体居中等等格式,当然通过poi的合并单元格那些操作也能实现,但比较复杂。比如这种Excel(仅仅是测试数据):
java 通过Excel模板导出复杂的Excel格式数据_第1张图片

这里可以直接把模板通过文件的输出流直接输出出来,然后在Excel里的单元格填写查询的数据,这样就简单多了。具体操作如下:

1. 查询出单元格要写入的数据
2. 获取Excel模板

Workbook workbook = null;
        Sheet sheet = null;
        ClassPathResource resource = new ClassPathResource("excel/analysis.xlsx");
        try {
            InputStream inputStream = resource.getInputStream();
            workbook = WorkbookFactory.create(inputStream);
            sheet = workbook.getSheetAt(0);
            workbook.setSheetName(0,"sheet页名称");
        } catch (Exception e) {
            e.printStackTrace();
        }

可以直接把未填写数据的Excel模板放在代码的resource目录下,然后读取

3.给固定位置的Excel单元格写入数据

sheet.getRow(1).getCell(1).setCellValue("单元格值");

ps: Excel的行和列都是从0开始计算

4.输出Excel

try {
            String disposition = String.format("attachment;filename=\"%s-%s.xlsx\"", sdf.format(new Date()), eventNum);
            response.setContentType("application/msexcel");
            response.setCharacterEncoding("utf-8");
            response.addHeader("Content-Disposition", disposition);
            workbook.write(response.getOutputStream());
        } catch (Exception e) {
            LOGGER.error(e.getMessage());
        } finally {
            try {
                workbook.close();
            } catch (IOException e) {
                LOGGER.error(e.getMessage());
            }
        }

以上,就可以完成复杂Excel的导出了,是不是比在POI里合并单元格,去画一个Excel简单些呢

你可能感兴趣的:(java)