EasyExcel的简单导出

这篇具有很好参考价值的文章主要介绍了EasyExcel的简单导出。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

EasyExcel的简单导出
Controller层代码
@GetMapping("/download")
public void download(String name, HttpServletResponse response) {
    fileManager.download(name, response);
}
Service处理代码
public void download(String name, HttpServletResponse response) {
        try {
            String template_path = "E://template//模板文件.xlsx";
            if (!new File(template_path).exists()) {
                String message = "模板文件不存在,路径:" + template_path;
                log.error(message);
                throw new XException(message);
            }
            String strFileName = String.format("%s_导出文件.xlsx", name);

            //获取数据字段数据【这个根据自己需要获取到对应的数据,自己实现此方法】
            List<SysColDto> sysColDtos = getData();

            //构建填充excel单元格数据【需要将获取到的转换成SysColExcelDto(代码见后面),这个实体类见后面】
            List<SysColExcelDto> list = new ArrayList<>();
            for (SysColDto sysColDto : sysColDtos) {
                SysColExcelDto sysColExcelDto = new SysColExcelDto();
                sysColExcelDto.setModname(sysColDto.getModname());
                sysColExcelDto.setLname(sysColDto.getLname());
                sysColExcelDto.setCname(sysColDto.getCname());
                list.add(sysColExcelDto);
            }
            //自定义行风格handler【笔者这边用了一个自定义行风格handler(代码见后面),是为了实现框线,看每个人的需求决定使不使用】
            CustomRowStyleHandler customRowStyleHandler = new CustomRowStyleHandler(1, 9);
            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            // 这里URLEncoder.encode可以防止中文乱码
            response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
            response.setHeader("Content-Disposition", String.format("attachment; filename=\"%s\"", new String(strFileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1)));
            //填充excel【easyExcel提供了多种生成excel的方式,这边使用的是根据模板来填充模板中的数据doFill,模板中数据填充位置需要参考:https://easyexcel.opensource.alibaba.com/docs/current/quickstart/fill】
            EasyExcel.write(response.getOutputStream())
                    .registerWriteHandler(customRowStyleHandler)
                    .withTemplate(template_path)
                    .sheet()
                    .doFill(list);
        } catch (IOException ex) {
            throw new XException(ex.getMessage());
        }
    }
SysColExcelDto.java类
  • 这是使用easyExcel提供的注解来标记字段填充行数,这种情况适用于自动生成,如果是填充excel(doFill方式)可以不用ExcelProperty注解标识,但是需要在模板中标记数据填充位置
  • 模板标记数据填充位置标记如下,name和number对应的excel对象的字段名,自行修改即可
    easyexcel导出,SpringBoot,java,excel,java,开发语言,esayExcel
/**
 * 书签导入excel对象
 */
@Data
public class SysColExcelDto {

    @ExcelProperty("对应信息采集组")
    private String modname;

    @ExcelProperty("对应采集栏目名称")
    private String lname;

    @ExcelProperty("对应系统中文字段")
    private String cname;
}
CustomRowStyleHandler.java
  • 这是自定义行风格处理器,是因为某些情况下需要加格式,看需求
  • 除了RowWriteHandler 可以实现,还有CellWriteHandler可以实现,顾名思义是处理单元格
/**
 * excel自定义行风格处理器
 */
public class CustomRowStyleHandler implements RowWriteHandler {

    //单元格起始下标
    private Integer cellIndexStart;

    //单元格结束下标
    private Integer cellIndexEnd;

    public CustomRowStyleHandler(Integer cellIndexStart, Integer cellIndexEnd) {
        this.cellIndexStart = cellIndexStart;
        this.cellIndexEnd = cellIndexEnd;
    }

    public CustomRowStyleHandler() {
    }

    @Override
    public void afterRowDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Integer relativeRowIndex, Boolean isHead) {
        Sheet sheet = writeSheetHolder.getSheet();
        Workbook workbook = sheet.getWorkbook();
        CellStyle cellStyle = workbook.createCellStyle();
        //设置边框样式
        cellStyle.setBorderLeft(BorderStyle.THIN);//细实线
        cellStyle.setBorderTop(BorderStyle.THIN);
        cellStyle.setBorderRight(BorderStyle.THIN);
        cellStyle.setBorderBottom(BorderStyle.THIN);
        for (Integer i = cellIndexStart; i <= cellIndexEnd; i++) {
            Cell cell = row.getCell(i);
            cell.setCellStyle(cellStyle);
        }
    }
}

文章来源地址https://www.toymoban.com/news/detail-606248.html

到了这里,关于EasyExcel的简单导出的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot整合Easyexcel实现将数据导出为Excel表格的功能

    本文主要介绍基于SpringBoot +MyBatis-Plus+Easyexcel+Vue实现缺陷跟踪系统中导出缺陷数据的功能,实现效果如下图: EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。他能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能。 本文

    2024年02月14日
    浏览(43)
  • java实现excel的导出之使用easyExcel

    在我们的项目需求中,经常会遇到导出的需求,其中excel的导出最为常见。生成Excel比较有名的框架有Apache poi,jxl等,但他们都存在一个严重的问题就是非常的耗内存,如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的full gc. EasyExcel是阿里巴巴

    2024年02月15日
    浏览(47)
  • Java——使用EasyExcel导出动态列的Excel

    多多点赞,会变好看! 多多留言,会变有钱! 有些时候列表的列可能是动态的,需要根据动态表头导出Excel文件,这时候可以使用下面的方法解决: 静态列导出代码:

    2024年02月15日
    浏览(49)
  • Java 导出Excel表格生成下拉框-EasyExcel

     

    2024年02月11日
    浏览(51)
  • 【JAVA】easyexcel 导出excel文件带多个图片

    最终效果  pom版本 实现代码  

    2024年02月16日
    浏览(36)
  • 【Java结合EasyExcel,模板文件填充并导出Excel】

    需求描述: 客户网页上填一个Excel表格,数据存到数据库,这个导出接口要做的就是从数据库中的获取数据并填充到模板文件,最后通过response返给前端一个下载链接,用户即可获取填充好的Excel文件。 方案一: 一开始使用的是easypoi,发现当填充一行数据时是OK的,但是如果

    2024年02月09日
    浏览(59)
  • Springboot基于easyexcel实现一个excel文件包含多个sheet表格的数据导出

    EasyExcel 是一款基于Java的开源Excel操作工具,它提供了简单且强大的 API,使开发人员可以轻松地读写、操作和生成Excel文件。 EasyExcel 支持 Excel 文件的导入和导出,可以处理大量数据,具有高性能和低内存占用。它可以读取 Excel 文件中的数据,并将数据转换为 Java 对象,也可

    2024年02月03日
    浏览(59)
  • 基于SpringBoot + EasyExcel + Vue + Blob实现导出Excel文件的前后端完整过程

    首先前端发起HTTP请求之后,后端返回一个Excel输出流,然后前端用Blob类型接收数据,并且解析响应头数据以及提取源文件名,最后用a标签完成下载。 一、后端代码 (1)导入阿里巴巴的EasyExcel依赖(pom.xml) (2)控制层(GameController.java) (3)接口层(IGameService.java) (4)

    2024年02月16日
    浏览(43)
  • Java根据excel模版导出Excel(easyexcel、poi)——含项目测试例子拿来即用

    一般列表导出以及个性化样式设置请看下面的文章: JAVA导出Excel通用工具类——第一篇:详细介绍POI 导出excel的多种复杂情况,包括动态设置筛选、动态合并横向(纵向)单元格等多种复杂情况. JAVA导出Excel通用工具——第二篇:使用EasyExcel导出excel的多种情况的例子介绍.

    2024年04月29日
    浏览(41)
  • java-EasyExcel导出excel设置单元格为文本格式(含代码)

    java-EasyExcel导出excel设置单元格为文本格式(含代码) 在使用EasyExcel导出excel模板时。我们会发现导出的日期和大长度数字都会自动更换格式,不是文本格式。并且在空白单元格输入日期也是格式有问题的,如下所示,可以看到当输入相同的日期时,格式会变成自适应,不是文

    2023年04月15日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包