java操作Excel效率之poi与fastexcel比较(转载)
2015-10-05 12:44
585 查看
于:http://blog.163.com/aaron_chan_520/blog/static/27852686201042485458338/
自己做了个小测试
POI代码如下
public void testPoiExcel(String strPath) throws Exception {
HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(strPath));
HSSFSheet sheet = wb.getSheetAt(0);
HSSFRow row;
HSSFCell cell;
for (int i = sheet.getFirstRowNum(); i < sheet.getLastRowNum(); i++) {
row = sheet.getRow(i);
for (int j = row.getFirstCellNum(); j < row.getLastCellNum(); j++) {
cell = row.getCell((short) j);
}
}
}
fastExcel代码如下
public void testFastExcel(String strPath) throws Exception {
Workbook workBook = FastExcel.createReadableWorkbook(new File(strPath));
workBook.open();
Sheet s = workBook.getSheet(0);
String[] row;
String cell;
for (int i = s.getFirstRow(); i <= s.getLastRow(); i++) {
row = s.getRow(i);
for (int j = s.getFirstColumn(); j <= s.getLastColumn(); j++) {
cell = s.getCell(i, j);
}
}
workBook.close();
}
Excel一行数据如下 【AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA
】
测试结果如下
POI 2272条 5782毫秒
FastExcel 2272条 828毫秒
在我的机器上设置的jvm内存 poi只能跑2272条数据,再多就内存溢出了。
FastExcel做到48000条还没溢出时间是14093毫秒
为什么这么大区别 我自己感觉是 POI用的是大对象HSSFRow,HSSFCell而Fastexcel是String[]和String
毕竟在集合中数组是占用空间最小的
但是这样的话 fastexcel不能操作Excel的样式了 ,如果是做简单的Excel导入导出首选FastExcel
本篇文章来自<A href='http://www.soidc.net'>IDC专家网</a> 原文链接:http://www.soidc.net/discuss/1/090115/00/627795_1.html
另:关于java读写excel不同方案效率的讨论http://bbs.csdn.net/topics/390107430/
自己做了个小测试
POI代码如下
public void testPoiExcel(String strPath) throws Exception {
HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(strPath));
HSSFSheet sheet = wb.getSheetAt(0);
HSSFRow row;
HSSFCell cell;
for (int i = sheet.getFirstRowNum(); i < sheet.getLastRowNum(); i++) {
row = sheet.getRow(i);
for (int j = row.getFirstCellNum(); j < row.getLastCellNum(); j++) {
cell = row.getCell((short) j);
}
}
}
fastExcel代码如下
public void testFastExcel(String strPath) throws Exception {
Workbook workBook = FastExcel.createReadableWorkbook(new File(strPath));
workBook.open();
Sheet s = workBook.getSheet(0);
String[] row;
String cell;
for (int i = s.getFirstRow(); i <= s.getLastRow(); i++) {
row = s.getRow(i);
for (int j = s.getFirstColumn(); j <= s.getLastColumn(); j++) {
cell = s.getCell(i, j);
}
}
workBook.close();
}
Excel一行数据如下 【AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA,AAAAAAAA
】
测试结果如下
POI 2272条 5782毫秒
FastExcel 2272条 828毫秒
在我的机器上设置的jvm内存 poi只能跑2272条数据,再多就内存溢出了。
FastExcel做到48000条还没溢出时间是14093毫秒
为什么这么大区别 我自己感觉是 POI用的是大对象HSSFRow,HSSFCell而Fastexcel是String[]和String
毕竟在集合中数组是占用空间最小的
但是这样的话 fastexcel不能操作Excel的样式了 ,如果是做简单的Excel导入导出首选FastExcel
本篇文章来自<A href='http://www.soidc.net'>IDC专家网</a> 原文链接:http://www.soidc.net/discuss/1/090115/00/627795_1.html
另:关于java读写excel不同方案效率的讨论http://bbs.csdn.net/topics/390107430/
相关文章推荐
- java.lang.ClassNotFoundException但是项目里明明已经导入了需要的类
- JAVA于Get和Post差异请求
- Java多线程12:ReentrantLock中的方法
- java Exception RuntimeException
- android eclipse ndk使用记录
- Spring @Cacheable 的key生成
- Eclipse--Team--SVN--URL修改
- 学习工具篇 - eclipse 中使用autotools plugins
- java基础——break灵活应用
- Mybatis返回Map的一种实现
- (转载)位图bitmap算法(java)
- Java——采用DOM4J+单例模式实现XML文件的读取
- Java实现简易的文件的迁移器
- Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.Invocation
- Java实现简易的文件的迁移器
- 插入排序-java
- 冒泡排序-java
- Genymotion 插件在 Eclipse 和 Android Studio 中点击后无法初始化 Initialize Engine: failed 解决方法
- java基础——运算符
- 选择排序-java