咔片PPT · AI自动生成演示文稿,模板丰富、排版精美 讯飞智文 · 一键生成PPT和Word,高效应对学习与办公

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是没有做到向下兼容的,下面是需要加的依赖

cn.hutool hutool-all 4.6.4 org.apache.poi poi 3.17

那你们懂得,作为一名程序员,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 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 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人生,我是一名萌萌哒程序媛话话。