1、easyExcel导出Excel表格
easyExcel导出Excel表格
参照简书:https://www.jianshu.com/p/882db0771b80
官网:https://github.com/alibaba/easyexcel
首先easyExcel能快速、简单的导出Excel,避免了OOM(内存溢出)的java的Excel导出工具类。
传统的可使用Apache poi、jxl。他们存在一个严重的问题,就是非常消耗内存。poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,能够原本一个3M的excel用POI sax依然需要100M左右内存降低到几M,并且再大的excel不会出现内存溢出,03版依赖POI的sax模式。在上层做了模型转换的封装,让使用者更加简单方便
使用的依赖
前提是创建一个SpringBoot项目。
<!--easyExcel --> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>1.1.2-beta5</version> </dependency>
Controller
@Controller public class UserController { public List<User> getAllUser() { List<User> userList = new ArrayList<>(); for (int i = 0; i < 100; i++) { User user = User.builder().name("张三" + i).password("1234").age(i).build(); userList.add(user); } return userList; } }
pojo
注意事项,实体类需要继承BaseRowModel,@Data和@Builder的作用是,@Data为实体类提供get/set方法,toString、构造方法。而@Builder能够方便批量创建实体类。
@ExcelProperty为Excel设置表头信息
@Data @Builder public class User extends BaseRowModel{ @ExcelProperty(value = "学号",index = 0) private Integer id; @ExcelProperty(value = "姓名",index = 1) private String name; @ExcelProperty(value = "密码",index = 2) private String password; @ExcelProperty(value = "年龄",index = 3) private Integer age; }
Test
读Excel
写Excel
web上传、下载
@SpringBootTest class ExcelDemoApplicationTests { // 注入controller类用来调用返回list集合的方法 @Autowired private UserController userController; @Test public void contextLoads() { // 文件输出位置 OutputStream out = null; try { out = new FileOutputStream("d:\\test.xlsx"); ExcelWriter writer = EasyExcelFactory.getWriter(out); // 写仅有一个 Sheet 的 Excel 文件, 此场景较为通用 Sheet sheet1 = new Sheet(1, 0,User.class); // 第一个 sheet 名称 sheet1.setSheetName("第一个sheet"); // 写数据到 Writer 上下文中 // 入参1: 数据库查询的数据list集合 // 入参2: 要写入的目标 sheet writer.write(userController.getAllUser(),sheet1); // 将上下文中的最终 outputStream 写入到指定文件中 writer.finish(); } catch (FileNotFoundException e) { e.printStackTrace(); } finally { try { // 关闭流 out.close(); } catch (IOException e) { e.printStackTrace(); } } } }
标签:
springboot
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律