龙空技术网

Java之Excel的导出功能(多sheet场景)

Java点滴 352

前言:

此时兄弟们对“java项目导出”大约比较关切,朋友们都需要知道一些“java项目导出”的相关知识。那么小编同时在网络上收集了一些有关“java项目导出””的相关知识,希望大家能喜欢,我们快快来了解一下吧!

我们采用的hutool的工具类,对实体类和map进行的excel导出操作,更加详细地说明,请参考:

首先创建一个实体类:

@Data // 实现了:1、所有属性的get和set方法;2、toString 方法;3、hashCode方法;4、equals方法@Builder // 建造者模式@NoArgsConstructor // 无参构造函数@AllArgsConstructor // 有参构造函数public class UserInfo {    private String name;    private Integer age;    private String idCard;    private String gender;    private String birthday;}

然后,我们以接口的形式进行调用

@RestController@RequestMapping(value = "/excel")public class TestExcel {    @GetMapping(value = "/export")    public void excelExport(HttpServletResponse response) {        //  以map的方式        Map<String, Object> row1 = new LinkedHashMap<>();        row1.put("姓名", "苹果");        row1.put("颜色", "红/黄/绿");        row1.put("口感", "酸甜");        row1.put("产地", "全国");        Map<String, Object> row2 = new LinkedHashMap<>();        row2.put("姓名", "香蕉");        row2.put("颜色", "黄");        row2.put("口感", "甜");        row2.put("产地", "南方");        ArrayList<Map<String, Object>> rows_1 = CollUtil.newArrayList(row1,row2);        UserInfo userInfo = new UserInfo();        userInfo.setName("张三");        userInfo.setAge(10);        userInfo.setGender("男");        userInfo.setIdCard("3013");        List<UserInfo> rows_2 = new ArrayList<>();        rows_2.add(userInfo);        // 通过工具类创建writer,默认创建xls格式        ExcelWriter writer = ExcelUtil.getWriter();        writer.setSheet("sheet1");        writer.merge(3, "水果信息");        // 一次性写出内容,使用默认样式,强制输出标题        writer.write(rows_1, true);        writer.setSheet("sheet2");        writer.addHeaderAlias("name", "姓名");        writer.addHeaderAlias("age", "年龄");        writer.addHeaderAlias("idCard", "证件号");        writer.addHeaderAlias("gender", "性别");        writer.addHeaderAlias("birthday", "生日");        writer.merge(4, "人员信息");        writer.write(rows_2, true);        //response为HttpServletResponse对象        response.setContentType("application/vnd.ms-excel;charset=utf-8");        //test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码        response.setHeader("Content-Disposition","attachment;filename=test.xls");        ServletOutputStream out = null;        try {            out = response.getOutputStream();            writer.flush(out, true);        } catch(Exception e) {            e.printStackTrace();        } finally {            // 关闭writer,释放内存            writer.close();            //此处记得关闭输出Servlet流            IoUtil.close(out);        }    }}

注意:我们第一个sheet用的map,第二个sheet用的实体类

接下来,我们使用postman进行调用

然后生成的excel如下:

标签: #java项目导出