JAVA解析Excel工具easyexcel的简要使用
星期三, 2018-12-19 | Author: Lee | JAVA-and-J2EE | 6,039 views
excel的版本说明:
Excel2003版最大行数是65536行。Excel2007开始的版本最大行数是1048576行。
Excel2003的最大列数是256列,2007以上版本是16384列。
项目git地址:https://github.com/alibaba/easyexcel
Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,
但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。
easyexcel重写了poi对07版Excel的解析,能够原本一个3M的excel用POI sax依然需要100M左右内存降低到KB级别,并且再大的excel不会出现内存溢出,03版依赖POI的sax模式。
在上层做了模型转换的封装,让使用者更加简单方便
使用pom.xml配置
<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>1.0.3</version> </dependency> |
使用代码如下:
package com.pomelolee.xls; import java.io.FileOutputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.metadata.Sheet; import com.alibaba.excel.metadata.Table; import com.alibaba.excel.support.ExcelTypeEnum; /** * @author pomelolee * * @time 2018年12月19日 下午2:42:18 */ public class EasyXls { public static void main(String[] args) throws Exception { writeWithoutHead(); } public static void writeWithoutHead() throws Exception { try (OutputStream out = new FileOutputStream("E://withHead.xlsx");) { ExcelWriter writer = new ExcelWriter(out, ExcelTypeEnum.XLSX); Sheet sheet1 = new Sheet(1, 0); sheet1.setSheetName("表一"); List<List<String>> head = new ArrayList<List<String>>(); List<String> headCoulumn1 = new ArrayList<String>(); List<String> headCoulumn2 = new ArrayList<String>(); List<String> headCoulumn3 = new ArrayList<String>(); headCoulumn1.add("第一列"); headCoulumn2.add("第二列"); headCoulumn3.add("第三列"); head.add(headCoulumn1); head.add(headCoulumn2); head.add(headCoulumn3); Table table = new Table(1); table.setHead(head); for (int i = 0; i < 10; i++) { writeDataToTable(table, sheet1, writer); } Sheet sheet2 = new Sheet(2, 0); sheet2.setSheetName("表二"); writeDataToTable(table, sheet2, writer); writer.finish(); } } private static void writeDataToTable(Table table, Sheet sheet, ExcelWriter writer) { List<List<String>> data = new ArrayList<>(); for (int i = 0; i < 100000; i++) { List<String> item = new ArrayList<>(); item.add("item0" + i); item.add("item1" + i); item.add("item2" + i); data.add(item); } writer.write0(data, sheet, table); } } |
文章作者: Lee
本文地址: https://www.pomelolee.com/1833.html
除非注明,Pomelo Lee文章均为原创,转载请以链接形式标明本文地址
No comments yet.
Leave a comment
Search
相关文章
热门文章
最新文章
文章分类
- ajax (10)
- algorithm-learn (3)
- Android (6)
- as (3)
- computer (85)
- Database (30)
- disucz (4)
- enterprise (1)
- erlang (2)
- flash (5)
- golang (3)
- html5 (18)
- ios (4)
- JAVA-and-J2EE (186)
- linux (143)
- mac (10)
- movie-music (11)
- pagemaker (36)
- php (50)
- spring-boot (2)
- Synology群晖 (2)
- Uncategorized (6)
- unity (1)
- webgame (15)
- wordpress (33)
- work-other (2)
- 低代码 (1)
- 体味生活 (40)
- 前端 (21)
- 大数据 (8)
- 游戏开发 (9)
- 爱上海 (19)
- 读书 (4)
- 软件 (3)