iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java如何实现超大Excel文件解析
  • 907
分享到

Java如何实现超大Excel文件解析

2023-07-02 18:07:45 907人浏览 独家记忆
摘要

今天小编给大家分享一下Java如何实现超大excel文件解析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、XSSFpac

今天小编给大家分享一下Java如何实现超大excel文件解析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

一、XSSF

package com.yy.demo01; import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.util.Date; 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 dd {public static void main(String[] args) {//开始时间long begin = System.currentTimeMillis();try (//读取一个已存在的Excel文件 Workbook workbook = new XSSFWorkbook(new FileInputStream("D:\\1\\demo-data.xlsx"));FileOutputStream out = new FileOutputStream("D:\\1\\100w.xlsx")) {      //在“已存在”的Excel文件中,创建新的sheetSheet sheet = workbook.createSheet();//获取格式编码值DataFormat dataFormat = workbook.createDataFormat();Short dateFormatCode = dataFormat.getFormat("yyyy年MM月dd日 HH:mm:ss");Short moneyFormatCode = dataFormat.getFormat("¥#,###");//创建日期格式对象CellStyle dateCellStyle = workbook.createCellStyle();dateCellStyle.setDataFormat(dateFormatCode);//设置格式编码//创建货币格式对象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(dateCellStyle);//货币金额格式对象    cell2.setCellValue(new Date());        Cell cell3 = row.createCell(3);//红包金额    cell3.setCellStyle(moneyCellStyle);//货币金额格式对象    cell3.setCellValue((int)(Math.random()*10000));        }    //写入文件workbook.write(out);//结束时间long end = System.currentTimeMillis();System.out.println("共耗时:" +(end - begin) + "毫秒");} catch (IOException e) { e.printStackTrace();}} }

Java如何实现超大Excel文件解析

二、SXSSF

package com.yy.demo01; import java.io.FileOutputStream;import java.io.IOException;import java.util.Date; 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; public class Demo10 {public static void main(String[] args) {//开始时间long begin = System.currentTimeMillis();try (//读取一个已存在的Excel文件 Workbook workbook = new SXSSFWorkbook(100);FileOutputStream out = new FileOutputStream("D:\\1\\100w.xlsx")) {      //在“已存在”的Excel文件中,创建新的sheetSheet sheet = workbook.createSheet();//获取格式编码值DataFormat dataFormat = workbook.createDataFormat();Short dateFormatCode = dataFormat.getFormat("yyyy年MM月dd日 HH:mm:ss");Short moneyFormatCode = dataFormat.getFormat("¥#,###");//创建日期格式对象CellStyle dateCellStyle = workbook.createCellStyle();dateCellStyle.setDataFormat(dateFormatCode);//设置格式编码//创建货币格式对象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(dateCellStyle);//货币金额格式对象    cell2.setCellValue(new Date());        Cell cell3 = row.createCell(3);//红包金额    cell3.setCellStyle(moneyCellStyle);//货币金额格式对象    cell3.setCellValue((int)(Math.random()*10000));        }    //写入文件workbook.write(out);//结束时间long end = System.currentTimeMillis();System.out.println("共耗时:" +(end - begin) + "毫秒");} catch (IOException e) { e.printStackTrace();}} }

三、easyExcel

准备实体类

public class Order {    @ExcelProperty("订单编号")    private String orderId; // 订单编号        @ExcelProperty("支付金额")    @NumberFormat("¥#,###")    private Double payment; // 支付金额        @ExcelProperty(value = "创建日期",converter = LocalDateTimeConverter.class)    private LocalDateTime creationTime; // 创建时间     public Order() {        this.orderId = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddhhmmss"))                + UUID.randomUUID().toString().substring(0, 5);        this.payment = Math.random() * 10000;        this.creationTime = LocalDateTime.now();    }     public String getOrderId() {        return orderId;    }     public void setOrderId(String orderId) {        this.orderId = orderId;    }     public Double getPayment() {        return payment;    }     public void setPayment(Double payment) {        this.payment = payment;    }     public LocalDateTime getCreationTime() {        return creationTime;    }     public void setCreationTime(LocalDateTime creationTime) {        this.creationTime = creationTime;    }       @Override    public String toString() {        return "Order [orderId=" + orderId + ", payment=" + payment + ", creationTime=" + creationTime + "]";    }}

准备converter转换类(兼容LocateDateTime日期时间类)

public class LocalDateTimeConverter implements Converter<LocalDateTime> {     @Override    public Class<LocalDateTime> supportJavaTypeKey() {        return LocalDateTime.class;    }     @Override    public CellDataTypeEnum supportExcelTypeKey() {        return CellDataTypeEnum.STRING;    }     @Override    public LocalDateTime convertToJavaData(CellData cellData, ExcelContentProperty contentProperty,            GlobalConfiguration globalConfiguration) {        return LocalDateTime.parse(cellData.getStringValue(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));    }     @Override    public CellData<String> convertToExcelData(LocalDateTime value, ExcelContentProperty contentProperty,            GlobalConfiguration globalConfiguration) {        return new CellData<>(value.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));    } }

写入300000条数据

public class Demo {    public static void main(String[] args) {        // 写入100w        EasyExcel.write("c:\\test\\run\\easy.xlsx", Order.class)                 .sheet("订单列表")                 .doWrite(data());    }        // 创建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;    }}

Java如何实现超大Excel文件解析

所以easyExcel最快,XSSF最慢且占用cpu最高

以上就是“Java如何实现超大Excel文件解析”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

--结束END--

本文标题: Java如何实现超大Excel文件解析

本文链接: https://www.lsjlt.com/news/343653.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java如何实现超大Excel文件解析
    今天小编给大家分享一下Java如何实现超大Excel文件解析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、XSSFpac...
    99+
    2023-07-02
  • Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
    目录一、XSSF二、SXSSF三、easyExcel一、XSSF package com.yy.demo01; import java.io.FileInputStream; i...
    99+
    2024-04-02
  • 使用java如何实现大量导出excel文件
    使用java如何实现大量导出excel文件?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。传统的导出方式会消耗大量的内存,2003每个sheet页最多65536条数据,2007每...
    99+
    2023-05-31
    java 文件导出 excel
  • Java解析Excel文件
    Java解析Excel ​ Java解析Excel可以说在日常工作中必不可少的一个需求。解析Excel有很多方式,主流有poi,easyexcel等技术,本文使用springboot+poi技术来实现解析excel文件。其中包含解析本地文件...
    99+
    2023-08-18
    excel java 开发语言
  • Java如何实现Excel文件加密解密
    本文小编为大家详细介绍“Java如何实现Excel文件加密解密”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java如何实现Excel文件加密解密”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。概述设置excel...
    99+
    2023-06-30
  • 利用Java如何实现解析Excel文件并存入数据库中
    利用Java如何实现解析Excel文件并存入数据库中?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.web.xml中的配置文件web.xml中的配置文件就按照这种方式写,...
    99+
    2023-05-31
    java excel ava
  • java解析Excel文件的方法实例详解
    目录介绍1.1 pom依赖1.2 将数据流转化为可解析的Workbook类型文件1.3 解析1.4 Controller层接收前端传递的Excel文件(前端使用Element-ui的...
    99+
    2024-04-02
  • Java实现解析JSON大文件JsonReader工具详解
    目录一,使用背景二,JsonReader的使用一,使用背景 之前遇到一个需求,是需要将一个json文件解析存储到数据库中。一开始测试的时候,json文件的大小都在几兆以内,所以直接将...
    99+
    2023-01-11
    Java JsonReader Java解析JSON大文件
  • Java通过导出超大Excel文件解决内存溢出问题
    前言 将业务数据导出到Excel表中,导出任务数据量较大时,导出的项目就会内存溢出,本文通过Java操作Poi的SXSSFWorkbook类进行导出,解决内存溢出问题。 1.采用Po...
    99+
    2024-04-02
  • java中export方法如何实现导出excel文件
    这篇文章将为大家详细讲解有关java中export方法如何实现导出excel文件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.export函数//导出文件接口public String&nb...
    99+
    2023-06-29
  • 利用java读取超大文件时出现内存溢出如何解决
    利用java读取超大文件时出现内存溢出如何解决?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1. 传统方式:在内存中读取文件内容读取文件行的标准方式是在内存中读...
    99+
    2023-05-31
    java ava
  • 自动化测试如何解析excel文件?
    前言   自动化测试中我们存放数据无非是使用文件或者数据库,那么文件可以是csv,xlsx,xml,甚至是txt文件,通常excel文件往往是我们的首选,无论是编写测试用例还是存放测试数据,excel都是很方便的。那么今天我们就把不同模块...
    99+
    2023-01-31
    文件 测试 excel
  • 详解如何实现在Vue中导入Excel文件
    目录一、安装依赖二、template中三、script中js代码以将此Excel导出为json数据为例 一、安装依赖 npm install file-saver --save n...
    99+
    2024-04-02
  • java实现excel和txt文件互转
    话不多说,请看代码:import java.io.*; import jxl.*; import jxl.write.*; //用java将txt数据导入excelpublic class CreateXLS { public static...
    99+
    2023-05-31
    java excel txt
  • java 文件大数据Excel下载实例代码
    java 文件大数据Excel下载实例代码excel可以用xml表示。故可以以此来实现边写边下载文件package com.tydic.qop.controller; import java.io.BufferedInputStream;...
    99+
    2023-05-31
    java excel ava
  • Java如何高效的读取一个超大文件
    这篇文章主要介绍“Java如何高效的读取一个超大文件”,在日常操作中,相信很多人在Java如何高效的读取一个超大文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java如何...
    99+
    2024-04-02
  • java如何解析wsdl文件
    在Java中,可以使用JAX-WS来解析和处理WSDL文件。以下是解析WSDL文件的简单步骤:1. 导入必要的类和库:import ...
    99+
    2023-10-18
    java
  • java如何实现将excel表格数据解析成JSONArray
    这篇文章给大家分享的是有关java如何实现将excel表格数据解析成JSONArray的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。程序主体:    public stat...
    99+
    2023-06-02
  • Java如何实现Excel文件转PDF无水印无限制
    这篇“Java如何实现Excel文件转PDF无水印无限制”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java如何实现Exc...
    99+
    2023-07-02
  • Linux中如何传输超大文件
    这篇文章主要介绍了Linux中如何传输超大文件,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。本文研究的主要内容是Linux下如何传输超大文件,具体如下。linux下的文件传输...
    99+
    2023-06-10
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作