网站首页 > java教程 正文
我们采用的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如下:
猜你喜欢
- 2024-09-21 如何把excel表格处理成json数据(jason转excel)
- 2024-09-21 一个读Excel数据的小例子,提供给爱学习的Java后端开发
- 2024-09-21 快速将Excel、CSV等格式文件数据转换到java对象
- 2024-09-21 GitHub Star 8800+ 的阿里开源的 Java 解析 Excel 工具
- 2024-09-21 还在重复劳动?不如用Python自动生成Excel以邮件发送
- 2024-09-21 Java8如何让Excel的读写变得更加简单高效
- 2024-09-21 java打印Excel表格(java输出excel表格)
- 2024-09-21 整理关于java写入内容到excel的例子供大家参考
- 2024-09-21 JavaAPI开发(3)POI——如何将List转换为excel文件
- 2024-09-21 【Java程序】读取指定路径下文件夹中的文件名,生成Excel表格!
你 发表评论:
欢迎- 最近发表
-
- class版本不兼容错误原因分析(class更新)
- 甲骨文Oracle公司为Java的最新LTS版本做出改进
- 「版本发布」Minecraft Java开发版 1.19.4-pre1 发布
- java svn版本管理工具(svn软件版本管理)
- 我的世界1.8.10钻石在第几层(我的世界1.7.2钻石在哪层)
- Java开发高手必备:在电脑上轻松切换多个JDK版本
- 2022 年 Java 开发报告:Java 8 八年不到,开发者都在用什么?
- 开发java项目,选择哪个版本的JDK比较合适?
- Java版本选型终极指南:8 vs 17 vs 21特性对决!大龄程序员踩坑总结
- POI Excel导入(poi excel导入附件)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)