同时读取30w数据,比较运行时间及CPU、内存占比

1.EasyExcel

package com.apesource;import java.util.ArrayList;
import java.util.List;import com.alibaba.excel.EasyExcel;
import com.apesource.entity.Order;public class Demo01 {public static void main(String[] args) {long begin = System.currentTimeMillis();// 写入100wEasyExcel.write("E:\\test\\demo05.xlsx", Order.class).sheet("订单列表").doWrite(data());long end = System.currentTimeMillis();System.out.println("EasyExcel读取30w文件共耗时" +(end - begin) +"毫秒");}// 创建100w条订单数据private static List<Order> data() {List<Order> list = new ArrayList<Order>();for (int i = 0; i < 300000; i++) {list.add(new Order());}return list;}
}

 

2.XSSFWorkbook

package com.apesource;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.DataFormat;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;public class Demo10 {public static void main(String[] args) {long begin = System.currentTimeMillis();// 使用try (Workbook workbook = new XSSFWorkbook();FileOutputStream out = new FileOutputStream("E:\\test\\demo03.xlsx")) {Sheet sheet = workbook.createSheet();Row headrow = sheet.createRow(0);Cell headcell0 = headrow.createCell(0);headcell0.setCellValue("序号");Cell headcell1 = headrow.createCell(1);headcell1.setCellValue("姓名");Cell headcell2 = headrow.createCell(2);headcell2.setCellValue("日期");Cell headcell3 = headrow.createCell(3);headcell3.setCellValue("红包金额");// 获取格式编码值DataFormat dataFormat = workbook.createDataFormat();short dataFormatCode = dataFormat.getFormat("yyyy年MM月dd日 HH:mm:ss");short moneyFormatCode = dataFormat.getFormat("¥#,###");// 创建日期格式对象CellStyle dataCellStyle = workbook.createCellStyle();dataCellStyle.setDataFormat(dataFormatCode);// 创建货币格式对象CellStyle moneyCellStyle =  workbook.createCellStyle();moneyCellStyle.setDataFormat(moneyFormatCode);for(int i = 0 ;i < 300000;i++) {String name  = "A" + i;// 创建行Row row = sheet.createRow(i+1);// 创建单元格Cell cell0 = row .createCell(0); // 序号cell0.setCellValue(String.valueOf(i+1));Cell cell1 = row.createCell(1); // 姓名cell1.setCellValue(name);Cell cell2 = row.createCell(2);// 日期cell2.setCellStyle(dataCellStyle);// 日期格式对象cell2.setCellValue(new Date());Cell cell3 = row.createCell(3);cell3.setCellStyle(moneyCellStyle);cell3.setCellValue((int)(Math.random() *1000000));}// 写入文件workbook.write(out);long end = System.currentTimeMillis();System.out.println("XSSFWorkbook读取30w文件共耗时" +(end - begin) +"毫秒");} catch (IOException e) {e.printStackTrace();}}}

3.SXSSFWorkbook

package com.apesource;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.DataFormat;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;public class Demo10 {public static void main(String[] args) {long begin = System.currentTimeMillis();// 使用try (Workbook workbook = new SXSSFWorkbook(100);FileOutputStream out = new FileOutputStream("E:\\test\\demo03.xlsx")) {Sheet sheet = workbook.createSheet();Row headrow = sheet.createRow(0);Cell headcell0 = headrow.createCell(0);headcell0.setCellValue("序号");Cell headcell1 = headrow.createCell(1);headcell1.setCellValue("姓名");Cell headcell2 = headrow.createCell(2);headcell2.setCellValue("日期");Cell headcell3 = headrow.createCell(3);headcell3.setCellValue("红包金额");// 获取格式编码值DataFormat dataFormat = workbook.createDataFormat();short dataFormatCode = dataFormat.getFormat("yyyy年MM月dd日 HH:mm:ss");short moneyFormatCode = dataFormat.getFormat("¥#,###");// 创建日期格式对象CellStyle dataCellStyle = workbook.createCellStyle();dataCellStyle.setDataFormat(dataFormatCode);// 创建货币格式对象CellStyle moneyCellStyle =  workbook.createCellStyle();moneyCellStyle.setDataFormat(moneyFormatCode);for(int i = 0 ;i < 300000;i++) {String name  = "A" + i;// 创建行Row row = sheet.createRow(i+1);// 创建单元格Cell cell0 = row .createCell(0); // 序号cell0.setCellValue(String.valueOf(i+1));Cell cell1 = row.createCell(1); // 姓名cell1.setCellValue(name);Cell cell2 = row.createCell(2);// 日期cell2.setCellStyle(dataCellStyle);// 日期格式对象cell2.setCellValue(new Date());Cell cell3 = row.createCell(3);cell3.setCellStyle(moneyCellStyle);cell3.setCellValue((int)(Math.random() *1000000));}// 写入文件workbook.write(out);long end = System.currentTimeMillis();System.out.println("SXSSFWorkbook读取30w文件共耗时" +(end - begin) +"毫秒");} catch (IOException e) {e.printStackTrace();}}}

综上数据可见:同是30w数据SXSSFWorkbook运行速度最快,CPU占比最小;EasyExcel次之;XSSFWorkbook运行速度最慢,CPU占比最大;

XSSFWorkbook,SXSSFWorkbook以及EasyExcel读取Excel文件的比较相关推荐

  1. 阿里的Easyexcel读取Excel文件(最新版本)

      本篇文章主要介绍一下使用阿里开源的Easyexcel工具处理读取excel文件,因为之前自己想在网上找一下这个简单的立即上手的博客,发现很多文章的教程都针对比较旧的版本的Easyexcel,没有使 ...

  2. 解决easyExcel读取EXCEL用String去接收数字,出现小数点BUG

    起因 目前项目中需要使用easyExcel 读取Excel文件,因为后端使用mongodb存储格式,数据格式不确定.因此读取文件时,未传递.class对象(指用方法一调用),使用String 接收Nu ...

  3. Java 使用EasyExcel读取Excel中多个sheet方法及示例代码

    本文主要介绍Java中,使用EasyExcel读取Excel文件中多个Sheet的方法,以及使用示例代码. 1.读取数据的实体对象 @Data public class DemoData {priva ...

  4. jav读取excel文件

    java读取excel文件 引入jar包依赖 读取excel的java代码 引入jar包依赖 <dependency><-- 需要用3.以上的版本,2.的会发生代码获取workboo ...

  5. EasyExcel轻松读取Excel文件!

    EasyExcel是一个Java库,用于快速.简单地读写Excel文件.要使用EasyExcel,您首先需要将其添加为项目的依赖: 如果使用Maven,可以添加以下依赖项: <dependenc ...

  6. form表单提交,Servlet接收并读取Excel文件

    首先是jsp页面: <body scroll=no style="overflow-y:hidden;" onselectstart="return false&q ...

  7. 读取EXCEL文件内容

    2019独角兽企业重金招聘Python工程师标准>>> package org.bigdata.framework.admin.web.util;import java.io.Fil ...

  8. 【Apache POI】Java 读取Excel文件

    Excel内容如下: 封装Excel行列字段的Bean: public class Employee {private String name;private String gender;privat ...

  9. easyExcel导出excel文件并打包成zip压缩包下载

    文件导出 专栏收录该内容 2 篇文章0 订阅 订阅专栏 package com.business.testExcelPort; import java.io.BufferedInputStream; ...

最新文章

  1. QT 使用全局变量的方法
  2. 6. Qt 信号与信号槽 (7)-QMetaObject:: activate
  3. C语言两班平均成绩,用C语言编程平均分数
  4. C++之静态成员变量和静态成员函数
  5. 女程序员,说多了都是泪!
  6. JavaScript 常用单词整理
  7. 040_Auto.js
  8. 区块链开发公司:区块链技术如何改变个人数据安全
  9. 建立完善的日期定义表
  10. win11怎么升级_win11系统升级更新注意事项
  11. 高并发系统设计四(系统怎样做到高可用)
  12. linux申请大块内存,linux 内存看一篇就够了(多图)
  13. 蒸汽流量计算软件_NHR-5600系列流量计算仪控制仪使用说明 总结
  14. vue input判断值是扫码枪还是键盘输入
  15. centos7 手动安装mysql8.0 并实现双机热备份 2022-1-1
  16. ORACLE优化器RBO与CBO介绍总结
  17. 区块链 — 默克尔树
  18. 网络工程基础——Ciso Packet Tracer 之旅
  19. 如何提升显卡性能测试软件,怎么测试显卡性能【设置办法】
  20. 2022冬季pat乙级

热门文章

  1. xbox的mac地址_如何将Xbox One控制器连接到Mac
  2. 买房的注意事项(zt)
  3. #L190604从楼市回报率谈价值投资
  4. Python使用递归方法求阶乘
  5. python自考_让我们一起来看看自学Python人的心声(附学习教程)
  6. 1 输入三个数,判断能否以这三个数构成一个三角形,若能则输出所构成三角形的类别(等边、等腰、直角或斜三角形)。
  7. Spark编程模型(之莎士比亚文集词频统计实现)
  8. Opencv 三对角线矩阵(Tridiagonal Matrix)解法之(Thomas Algorithm)
  9. JQuery实例(三)- 动态修改Table中的内容
  10. 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?【LeetCode Hot 100】