hutool导入导出excel,效率飞起来,拒绝cell填充
Hutool,A set of tools that keep Java sweet
近几年来,很多人吹捧hutool工具类库,github上star数目更是达到了惊人的18.2K,那为什么会受到大家的欢迎呢,工作中恰巧接触到一个excel的导入导出业务,使用hutool工具后真的爽得不行,今天在这里介绍给大家。
导入excel
敲代码前我们需要先去在pom文件加载一下hutool的依赖哦,我们项目中之前使用的poi版本是3.17,想要使用hutool工具类需要将poi的版本升至3.17,升级过程中还是有一些不愉快的,因为poi3.17是没有做到向下兼容的,下面是需要加的依赖
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.6.4</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
那你们懂得,作为一名程序员,talk is cheap,下面我们直入主题,直接上代码
@PostMapping("/import")
private void test(MultipartFile file) throws RuhrCloudException {
ExcelReader reader;
try {
// 获取当前reader对象
reader = ExcelUtil.getReader(file.getInputStream());
// 装配alias,将你的对象和excel中字段匹配哦
assembleTableReader(reader);
// 读读读
List<Test> result = reader.readAll(Test.class);
log.info(result.toString());
} catch (IOException e) {
e.printStackTrace();
}
}
private void assembleTableReader(ExcelReader reader) {
reader.addHeaderAlias("姓名", "name");
reader.addHeaderAlias("性别", "gender");
reader.addHeaderAlias("年龄", "age");
reader.addHeaderAlias("工作内容", "workContent");
}
excel中内容:
结果:
你看是不是很简单呢。我们再来看一下导出。
导出excel
上代码
@GetMapping("/export")
private void test(HttpServletResponse response) throws RuhrCloudException, IOException {
// 构建导出数据
List<Test> exportList = Lists.newArrayList();
exportList.add(Test.builder().name("小李").age(18).gender("男").workContent("敲代码").build());
exportList.add(Test.builder().name("小陈").age(18).gender("男").workContent("敲代码").build());
exportList.add(Test.builder().name("小蓝").age(18).gender("男").workContent("敲代码").build());
exportList.add(Test.builder().name("我").age(18).gender("nv").workContent("睡觉").build());
// 获取writer
ExcelWriter writer = ExcelUtil.getWriter();
// 装配writer alias
assembleSystemWriter(writer);
writer.write(exportList, true);
write(writer, response);
}
private ExcelWriter assembleSystemWriter(ExcelWriter writer) {
writer.addHeaderAlias("name", "姓名");
writer.addHeaderAlias("gender", "性别");
writer.addHeaderAlias("age", "年龄");
writer.addHeaderAlias("workContent", "工作内容");
return writer;
}
private void write(ExcelWriter writer, HttpServletResponse response) throws IOException {
// 一次性写出内容,使用默认样式,强制输出标题
// response为HttpServletResponse对象
response.setContentType("application/vnd.ms-excel;charset=utf-8");
// test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码
response.setHeader("Content-Disposition", "attachment;filename=test.xls");
ServletOutputStream out = response.getOutputStream();
writer.flush(out, true);
// 关闭writer,释放内存
writer.close();
// 此处记得关闭输出Servlet流
IoUtil.close(out);
}
导出结果:
可以自己调整样式哦,代码比较粗糙,只是当个demo让大家了解一下就好哈。
尾言
话话的今日头条今天开通咯,坚持原创,希望大家可以多多关注我,也可以私聊我探讨java人生,我是一名萌萌哒程序媛话话。