使用easyExcel实现浏览器下载Excel。

之前在使用easyExcel的时候发现网上对于easyExcel web下载介绍比较少,所以我想着出个比较简单的文章帮助大家了解 easyExcel的使用。

一、首先我们需要导入pom依赖:

    <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>2.2.10</version>
        </dependency>

二、创建实体类 DemoData:


@Data
//设置背景色为空白,不使用easyExcel默认灰色背景 (有一说一默认背景是真的丑!)
@HeadStyle(fillPatternType = FillPatternType.NO_FILL, fillForegroundColor = 10)
public class DemoData {
    @ExcelProperty("字符串标题") //excel表头
    private String string;
    @ExcelProperty("日期标题")
    private Date date;
    @ExcelProperty("数字标题")
    private Double doubleData;
    /**
     * 忽略这个字段
     */
    @ExcelIgnore
    private String ignore;
}
注意:我这里是使用了Lombok插件 生成的 set、get 方法,如果没用这个插件,记得要手动写好set、和get、方法哦,因为easyExcel官方文档明确说明 实体类必须要有 get和set方法

三、编写导入工具类

//无填充方式导出并下载xlsx
    public static void downloadUnfilledToXlsx(String excelName, HttpServletResponse response, Class cla, List list) throws IOException {
        // 这里注意 使用swagger 会导致各种问题,easyexcel官方文档推荐直接用浏览器或者用postman测试
        response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        response.setCharacterEncoding("utf-8");
        // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
        String fileName = URLEncoder.encode(excelName, "UTF-8").replaceAll("\\+", "%20");
        response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
        EasyExcel.write(response.getOutputStream(), cla).sheet(excelName).doWrite(list);
    }

四、为实体类注入数据

这里就简简单单注入些 测试数据

    private List<DemoData> data() {
        List<DemoData> list = new ArrayList<DemoData>();
        for (int i = 0; i < 10; i++) {
            DemoData data = new DemoData();
            data.setString("字符串" + i);
            data.setDate(new Date());
            data.setDoubleData(0.56+i);
            list.add(data);
        }
        return list;
    }

五、编写Controller接口

   @RequestMapping("/download")
    public void download(HttpServletResponse response) throws IOException {
       EasyExcelUtils.downloadUnfilledToXlsx("easyExcel测试",response,DemoData.class,data());
    }

六、浏览器测试功能

在这里插入图片描述
下载后:
在这里插入图片描述
打开后:
在这里插入图片描述

总结:原创不易,点个赞哈。

### 使用 EasyExcel 实现文件导出并浏览器下载 为了实现在 Spring Boot 应用程序中使用 EasyExcel 导出 Excel 文件并在浏览器下载的功能,需遵循以下说明: #### 添加 Maven 依赖 首先,在项目的 `pom.xml` 文件中添加必要的依赖项。这包括 Apache POI 和 Alibaba 的 EasyExcel。 ```xml <!-- poi --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.11</version> </dependency> ``` #### 定义实体类 创建一个 Java 类来映射要导出的数据结构。例如,假设有一个名为 `ImportExcelParam` 的类用于表示表格中的每一行数据[^4]。 #### 编写 Service 方法 在服务层编写处理逻辑的方法。此方法负责设置 HTTP 响应头信息,并调用 EasyExcel API 来执行实际的文件写出操作。 ```java public void exportReport(HttpServletResponse response, QueryClearOrderInfoParam param) throws IOException { // 设置响应头部信息以便于客户端识别为附件形式下载 String fileName = URLEncoder.encode("导出excel.xlsx", "UTF-8"); response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8"); response.setHeader("Content-Disposition", "attachment;filename=" + fileName); // 调用 EasyExcel 工具库完成文件流输出到 HttpServletResponse 对象上 EasyExcel.write(response.getOutputStream(), ImportExcelParam.class) .sheet("模板") .doWrite(data(param)); } ``` 注意这里设置了正确的 MIME 类型 (`vnd.openxmlformats-officedocument.spreadsheetml.sheet`) 并指定了字符编码方式为 UTF-8,以确保中文名称能够被正确解析显示[^2]。 #### 避免返回 JSON 结果 当实现了上述功能之后,尝试加上如下的语句可能会引起错误: ```java return Result.ok().message("下载成功"); ``` 这是因为一旦开始向 ServletResponse 输出字节流(即 Excel 文件),就不能再继续往同一个请求里追加其他类型的响应体内容了;因此建议移除此类代码片段[^3]。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值