`

07版Excle文件解析(超大文件)

    博客分类:
  • java
阅读更多

由于现存的Excel(07)解析API 只有apache 的poi能够使用,但是如果文件过于庞大,poi解析就有问题了,占用很大的内存

而且速度很慢,我们自己写了一个解析07版Excel的程序,有兴趣的朋友可以看看,很简单,效率还不错

 

解析的代码见附件 :07Excel_source_code.zip

 

下面是使用的代码:

 

1.验证是否是07+版excel(07版以上的excel构造相同)  代码在07Excel_source_code.zip下excel包的 ExcelUtils.java

 

      /**

* Excel 2007+ using the OOXML format(actually is a zip)

* @return

*/

public static boolean isOOXML(InputStream inputStream) {

try {

return inputStream.read() == 0x50 && inputStream.read() == 0x4b

&& inputStream.read() == 0x03 && inputStream.read() == 0x04;

} catch (IOException e) {

throw new RuntimeException(e);

}

}

 

2.通过上面的方法进行判断 (03版直接用jxl进行解析) 这里只讲解07+版的解析方式

 

 

public List<CommonChatObject> readExcel() {

List<ObjectList > list = new LinkedList<ObjectList >();

SimpleXLSXWorkbook workbook = new SimpleXLSXWorkbook(this.file); //传入你要解析的07Excel文件(假设该文件只有两列 id,name)

Sheet sheet = workbook.getSheet(0);

List<Cell[]> rows = sheet.getRows();

if (rows.size() > 1) {

for (int i = 1; i < rows.size(); i++) {     //从1开始,跳过列名

ObjectList chat = new ObjectList();    定义一个对象(对象字段与excel的列对应)

                            //下面开始解析

Cell[] cell = rows.get(i);

if (StringUtils.isBlank(cell[0].getValue())) {

continue;

}

String id= cell[0].getValue();

String name = cell[1].getValue();

chat.setId(id);

chat.setName(name);

list.add(chat);

}

}

return list;      //得到解析内容

}

 

 

 

 

————————————————————————————————————————————————————

这里整理了一个jar包,可以直接使用,能够解析07与03版  

 

//测试类

 

public static void main(String[] args) {

 

// check is office2007 or 03 version

ExcelUtils.getExcelExtensionName(new File("/07.xlsx"));

 

ReaderSupport rxs = ReaderSupport.newInstance(ReaderSupport.TYPE_XLSX, new File("/in.xlsx"));   //如果是07第一个参数ReaderSupport.TYPE_XLSX,03第一个参数是ReaderSupport.TYPE_XLS

rxs.open();

ExcelRowIterator it = rxs.rowIterator();

while (it.nextRow()) {

System.out.println(it.getCellValue(0));

}

rxs.close();

 

WriterSupport wxs = WriterSupport.newInstance(WriterSupport.TYPE_XLSX, new File("/out.xlsx"));    //同上

wxs.open();

wxs.increaseRow();

for (int i = 0; i < 5; i++) {

wxs.increaseRow();

wxs.writeRow(new String[] { "test" + i });

}

wxs.close();

}

 

jar 包见附件excel.jar

分享到:
评论
1 楼 kouzhong7 2013-05-31  
 

非常好,解析30000条数据的文件,打印出来 才20秒

相关推荐

    SpringBoot实现Excel文件解析

    在Spring Boot框架中,实现Excel文件的...总的来说,Spring Boot结合Apache POI提供了一种高效且灵活的方式来处理Excel文件解析任务,适用于各种后端应用。通过合理的代码设计和优化,可以满足复杂的数据导入导出需求。

    解析EXCEL文件源码

    ### 解析EXCEL文件源码知识点详解 #### 一、导入EXCEL文件并获取数据流 在处理EXCEL文件时,通常需要先将其作为一个输入流读取。代码中使用了`MultipartHttpServletRequest`来处理HTTP请求中的多部分数据,这在上...

    android 解析 excel 文件

    在Android平台上,解析Excel文件是一项常见的任务,尤其在数据处理、报表展示或者用户交互中。本文将详细讲解如何在Android应用中实现Excel文件的解析,主要聚焦于使用JXL库进行处理。 首先,JXL是一个Java库,专门...

    文件上传Excel解析相关的jar

    本资源中提到的"文件上传Excel解析相关的jar"是针对使用Java和SpringMVC进行Excel文件操作时所必需的库文件。 首先,文件上传是Web应用的基本功能之一。在SpringMVC中,我们可以利用`MultipartFile`接口来处理文件...

    Excel文件上传,获取Excel文件并解析

    Excel文件上传,获取Excel文件并解析

    java上传excel并且解析入库

    在Java开发中,上传并解析Excel文件是一种常见的需求,特别是在数据处理、报表导入或系统集成等场景。本篇文章将深入探讨如何实现这个功能,主要涉及的技术包括文件上传、Excel解析以及数据库操作。 首先,我们需要...

    java解析Excel文件并把数据存入数据库和导出数据为excel文件SpringBoot代码示例

    1、java解析读取excel文件中的数据,并写入数据库。 2、java读取数据库数据,并导出为excel文件。 3、README.md中有详细的操作步骤示例。 使用说明: 1. 先使用postman导入:other/excel相关.postman_collection....

    解析excel文件

    Excel文件主要有两种格式:`.xls`(旧版)和`.xlsx`(新版),它们都是用于存储表格数据、计算公式、图表和其他复杂功能的文件。在编程或数据分析中,我们经常需要解析这些文件,以便在程序中使用数据或执行进一步的...

    poi解析excel文件

    1. **HSSF(Horrible Spreadsheet Format)**:这是Apache POI中处理旧版Excel文件(.xls,Biff8格式)的部分。HSSF提供了创建、修改和读取Excel 97-2007格式的工作簿的类和接口。 2. **XSSF(XML Spreadsheet ...

    ImportExcelUtil.java文件支持所有Excel文件解析导入的方法

    本文件内含有支持所有Excel文件解析导入的方法

    解析大文件excel

    "解析大文件excel"这个主题就聚焦于如何高效地处理那些包含大量数据的Excel文件,特别是当使用Apache POI库时遇到的内存问题。Apache POI是Java开发者广泛使用的API,用于读写Microsoft Office格式的文件,包括Excel...

    前端js解析/读取excel文件

    本文将深入探讨如何使用JavaScript在浏览器端解析和读取Excel文件,主要基于开源库`js-xlsx`。 `js-xlsx`是一个强大的JavaScript库,专门用于解析和操作Excel文件(.xlsx和.xls格式)。它支持读取二进制文件、Base...

    android 解析Excel 文件

    为了解决这个问题,我们可以使用Apache POI的精简版,如Apache POI SXSSF,它支持在内存有限的环境中创建和修改大型Excel文件。 以下是使用Apache POI SXSSF在Android中解析Excel的基本步骤: 1. **添加依赖**:在...

    使用C/C++解析excel

    然而,由于Excel文件是Microsoft Office套件的一部分,通常由诸如Python的pandas库或Java的Apache POI等高级语言处理,使用C/C++直接解析Excel文件可能相对复杂一些。下面我们将深入探讨如何在C/C++环境中解析Excel...

    poi 解析excel文件内容demo

    在这个"poi 解析excel文件内容demo"中,我们主要关注如何使用Apache POI库来读取和解析Excel文件,无论它们是2003版的.XLS还是2007以后的.XLSX格式。 首先,Apache POI提供了两种主要的接口来处理Excel文件:HSSF...

    创建文件夹、创建txt文件、向里面写数据、解析txt文件、创建excel文件、解析excel文件

    创建文件夹、创建txt文件、向里面写数据、解析txt文件、创建excel文件、解析excel文件 下载后直接运行

    日志文件解析Excel版

    "日志文件解析Excel版"是一个工具,它旨在帮助用户方便地处理和分析这些日志数据,将其转化为易于理解和处理的Excel格式。 1. **日志文件解析**:日志文件通常包含大量的文本信息,如时间戳、事件级别(如INFO、...

    perl解析excel文件

    在这个场景中,我们关注的是如何使用Perl来解析Excel文件。Excel文件通常包含表格数据,这对于数据分析、报告生成或自动化工作流程非常有用。Perl提供了多种库来处理这种任务,其中最常用的是Spreadsheet::ParseXLSX...

    EXCEL文件解析工具JXL

    EXCEL文件解析工具 jxl.jar 支持xls格式excel文件读写

Global site tag (gtag.js) - Google Analytics