办公软件三剑客——Excel表格 可视化数据,excel表格制作教程入门,及常用公式
909
2022-05-29
Java+EasyExcel实现文件导入导出
引言
项目中需要Excel文件的导入与导出Excel并下载,例如,导入员工信息,导出员工信息,手动输入比较繁琐,所以本篇博文教大家如何在Java中导入Excel文件与导出Excel文件
技术栈
Excel工具:EasyExcel
选用框架:Spring、Spring MVC、MyBatis(SSM)
项目构建管理工具:Maven
需求:
要求利用excel工具实现员工信息的导入与导出
导出要求为输出到指定位置并下载
导入文件导入后,存入数据库,并显示在页面
导出文件,点击导出后写入指定地址,并下载该文件
效果图
项目结构
核心源码
导入阿里巴巴EasyExcel依赖
这里采用EasyExcel,为什么不采用POI呢?
因为EasyExcel是对POI做的一个升级,POI相对于笨重,EasyExcel去除了一些POI比较繁琐的东西,所以EasyExcel比较轻量级,所以本文采用EasyExcel
EasyExcel是阿里巴巴的产品,POI是Apache基金会的开源产品,EasyExcel对POI做了一个升级
核心实体类
package com.wanshi.spring.entity; import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @NoArgsConstructor @AllArgsConstructor public class Employee { @ExcelIgnore private String noid; @ColumnWidth(20) @ExcelProperty("员工姓名") private String emp_name; @ColumnWidth(20) @ExcelProperty("员工年龄") private Integer emp_age; @ExcelIgnore private Integer emp_sex; //冗余字段 @ColumnWidth(20) @ExcelProperty("员工性别") private String str_emp_sex; @ColumnWidth(20) @ExcelProperty("员工工资") private Double emp_salary; @ColumnWidth(20) @ExcelProperty("员工住址") private String emp_address; @ColumnWidth(20) @ExcelProperty("员工岗位") private String emp_position; //分页相关,当前页与每页的数据条数 @ExcelIgnore private Integer pageNum; @ExcelIgnore private Integer pageSize; }
核心-类
EmployeeListener类:
package com.wanshi.spring.listener; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.wanshi.spring.entity.Employee; import java.util.ArrayList; import java.util.List; public class EmployeeReadListener extends AnalysisEventListener
EasyExcel导入文件
Test测试类实现文件导入并存入数据库
@Test public void test1(){ ExcelReaderBuilder workBook = EasyExcel.read ("C:\\Users\\王会称\\Desktop\\员工.xlsx", Employee.class, new EmployeeReadListener()); // 封装工作表 ExcelReaderSheetBuilder sheet1 = workBook.sheet(); // 读取 sheet1.doRead(); //写入数据库 List
通过页面点击导入文件并存入数据库
EmployeeController类:
@PostMapping("/import_employee_excel") public String importEmployeeExcel(MultipartFile emp_excel) { employeeService.importExcel(emp_excel); return "redirect:/employee/list"; }
EmployeeService类:
/** * 获取用户选择的文件并将文件存入指定位置再将数据存入数据库 * @param emp_excel * @return */ public Integer importExcel(MultipartFile emp_excel) { try { String fileName = FileUploadUtil.upload(emp_excel, ""); ExcelReaderBuilder workBook = EasyExcel.read (GlobalSet.upload_url+fileName, Employee.class, new EmployeeReadListener()); // 封装工作表 ExcelReaderSheetBuilder sheet1 = workBook.sheet(); // 读取 sheet1.doRead(); List
EasyExcel导出文件
Test测试类导出文件到指定文件
@Test public void test2() throws FileNotFoundException { List
通过页面导出到指定文件后并下载文件
EmployeeController类
@GetMapping("/export_employee_excel") public void exportEmployeeExcel(HttpServletResponse response) { try { employeeService.exportEmployeeExcel(response); } catch (IOException e) { e.printStackTrace(); } }
EmployeeService类:
public void exportEmployeeExcel(HttpServletResponse response) throws IOException { List
结语
至此,数据完美导入导出,该案例通俗易懂,详细一步步带入,通过本案例,可实现文件基本的导入导出,认真学习的你很耀眼,相信你的技术一定会有一个质的飞跃,好啦,本周技术分享到此结束
都看到这里啦,确定不嘛
若在本项目中遇到技术难题,可在下方评论区留言或私信我,授人以鱼不如授人以渔
百度网盘地址:链接: https://pan.baidu.com/s/1vmrL7vl5Hlq-SqjdndOKyQ 提取码: me3n
如果你觉得博主写的不错的话,不妨给个一键三连,点击下方小拳头即可一键三连。
感谢你的支持!
Java 数据库
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。