我们采用的hutool的工具类,对实体类和map进行的excel导出操作,更加详细地说明,请参考:
https://hutool.cn/docs/#/
首先创建一个实体类:
@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如下:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。