`
Cwind
  • 浏览: 265370 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
793bb7df-a2a9-312d-8cb8-b66c3af482d1
LeetCode题解
浏览量:53484
社区版块
存档分类
最新评论

Java读写Excel:Apache POI, JXL与OpenCSV

    博客分类:
  • Java
阅读更多

前些日子把JXL替换为ApachePOI,原因很简单,JXL在2009年10月已经停止更新,并且不支持Excel 2007 OOXML (.xlsx)格式的文件。事实上把JXL与POI进行比较并不公平,因为JXL只能够操作OLE2格式的Excel(即.xls),而POI则是能够读写xls(x)、doc(x)、ppt(x)的一整套解决方案。

 

不同版本Excel的行列数限制: 

+-----------------+-----------+--------------+---------------------+
|                 | Max. Rows | Max. Columns | Max. Cols by letter |
+-----------------+-----------+--------------+---------------------+
| Excel 365*      | 1,048,576 | 16,384       | XFD                 |
| Excel 2013      | 1,048,576 | 16,384       | XFD                 |
| Excel 2010      | 1,048,576 | 16,384       | XFD                 |
| Excel 2007      | 1,048,576 | 16,384       | XFD                 |
| Excel 2003      | 65,536    | 256          | IV                  |
| Excel 2002 (XP) | 65,536    | 256          | IV                  |
| Excel 2000      | 65,536    | 256          | IV                  |
| Excel 97        | 65,536    | 256          | IV                  |
| Excel 95        | 16,384    | 256          | IV                  |
| Excel 5         | 16,384    | 256          | IV                  |
+-----------------+-----------+--------------+---------------------+

 *Excel 365 unverified.

 

JXL - JExcelApi

Maven Repo

官方网站

最后更新:Oct 24,2009

 

<dependency>
 <groupId>net.sourceforge.jexcelapi</groupId>
 <artifactId>jxl</artifactId>
 <version>2.6.12</version>
</dependency>

JXL是一个日本人写的简单类库。作者主页POI和jxl.jar性能比较一贴中提到其性能较poi更高,内存消耗更少。当且仅当目标文档是行数接近但不超过65536的xls格式时成立。

 

类图:

public static void main(String[] args) {
  try {
   // create writable wookbook
   WritableWorkbook workbook 
    = Workbook.createWorkbook(new File("jxlOutput.xls"));
   
   // create writable sheet
   WritableSheet sheet = workbook.createSheet("First Sheet", 0);
   for(int i = 0; i < data.length; i++) {
    for(int j = 0; j < data[i].length; j++){
     
     // create a cell at position (i, j) and add to the sheet
     Label label = new Label(i, j, data[i][j]);
     sheet.addCell(label);
    }
   }
   workbook.write();
   workbook.close();
  } catch (IOException | WriteException e) {
   e.printStackTrace();
  }
 }

Apache POI

Maven Repo

官方网站

最后更新:Dec 17,2014

 

类图:

<dependency> 
  <groupId>org.apache.poi</groupId>
  <artifactId>poi</artifactId>
  <version>3.10.1</version>
</dependency> 
 
 <dependency>
     <groupId>org.apache.poi</groupId>
     <artifactId>poi-ooxml</artifactId>
     <version>3.9</version>
 </dependency>

Apache POI API的一些重点:

  • Apache POI包含 Excel 97(-2007)文件格式(.xls)的Java实现 – HSSF。(彩蛋:H指Horrible)
  • Apache POI包含 Excel 2007 OOXML文件格式(.xlsx)的Java实现 – XSSF。
  • Apache POI的HSSF和XSSF API提供了读写和修改Excel电子表格的功能。
  • Apache POI也提供了SXSSF API(流式XSSF),它是XSSF的扩展,用于写入非常大的excel文件。SXSSF API需求较小的内存,适用于在堆内存受限时处理较大excel文件的情况。
  • 可以选择两种模型:Event Model和User Model。Event Model需求较小的内存,流式读取并处理每个单元;User Model更具备面向对象的特征,方便操作。
  • Apache POI提供了对excel附加功能的完美支持,如公式、单元格样式、颜色、字体、数据验证、图像和超链接等。

SpreadSheet API 功能摘要:

 

以下是两个基于XSSF读写xlsx文件的例子:

读取xlsx文件

写入xlsx文件

 

OpenCSV: 

CSV文件以纯文本形式存储表格数据(数字和文本)。OpenCSV是一个用于读写CSV文件的简单Java类库。 Maven Repo

官方网站

最近更新:Jul 28,2011

<dependency>
 <groupId>net.sf.opencsv</groupId>
 <artifactId>opencsv</artifactId>
 <version>2.3</version>
</dependency>

OpenCSV将CSV文件中的每一行读取为一个String数组。相应地,写文件时通过csvWriter.writeNext(array)把String数组内容作为一行写入CSV文件

 

读写CSV文件的例子:

读取csv文件内容

将xlsx文件内容写入csv

 

References:

1. POI-HSSF and POI-XSSF - Java API To Access Microsoft Excel Format Files

2. Java Read/Write Excel File using Apache POI API

 

Original Link: http://cwind001.github.io/blog/2015/02/27/apachepoi/

 

4
0
分享到:
评论
2 楼 nianwenhong 2015-03-03  
1 楼 buxin_2008 2015-03-02  
学习了,顶起!

相关推荐

    java开发Excel所需 poi jxl两种jar包

    本文将深入探讨两种常用的Java库:Apache POI和JXL,它们都提供了处理Excel文件的能力。 Apache POI是Apache软件基金会的一个开源项目,它提供了一个强大的API,允许Java开发者读取、写入和修改Microsoft Office...

    ExcelDemo_Excel导出_下载_POI读excel_JXL读写excel_java读写excel_列宽_读取合并或拆分单元格内容

    本文将深入探讨Java编程语言中如何使用Apache POI库和JExcelAPI(JXL)来读取、写入及操作Excel文件,同时也包括设置列宽以及处理合并或拆分的单元格内容。 首先,Apache POI是Apache软件基金会的一个开源项目,专...

    java操作excel——jxl和poi比较

    本文将对比两种主流的Java Excel处理库:jxl和Apache POI,并探讨它们的特性和适用场景。 首先,jxl是较早的Java Excel处理库,主要用于读写Excel 97-2003格式的.XLS文件。它的API简洁,易于上手,对于简单的读写...

    java读取excel文件POI+jxl

    在Java中,读取和操作Excel文件是常见的需求,这通常涉及到使用库,如Apache POI和JXL。这两个库都允许开发者在Java中方便地读取、写入和修改Excel文件。 Apache POI是一个强大的库,专门用于处理Microsoft Office...

    POI与JXL的实战性能对比

    ### POI与JXL实战性能对比分析 #### JXL与POI概述 在日常工作中,尤其是在处理Excel文件时,我们通常会面临选择合适的Java库来完成任务的问题。JXL和POI是两个广泛使用的库,它们各有优势和局限性。 **JXL...

    Java通过POI和JXL给Excel动态添加水印

    本文将详细介绍如何利用Java编程语言结合JXL和Apache POI库来实现给Excel文档添加动态水印的功能。 #### 技术栈介绍 - **JXL**: 是一个用于读写Excel文件的Java库,支持多种Excel版本,包括.xls格式。 - **Apache ...

    JAVA 解析 Excel 工具 Java 解析、生成 Excel 比较有名的框架有 Apache poi、jxl.zip

    Apache POI和jxl是两个非常知名的库,用于在Java环境中解析和生成Excel文件。 Apache POI是Apache软件基金会的一个开源项目,它提供了API来处理Microsoft Office格式的文件,包括Excel(.xls和.xlsx)。Apache POI...

    poi jxl 生成EXCEL 报表

    Apache POI 和 JExcelAPI(JXL)是两个广泛使用的库,分别用于处理Microsoft Office的POI格式(包括Excel)和Java环境中的Excel文件。下面将详细阐述这两个库以及如何使用它们来生成Excel报表。 Apache POI 是一个...

    apache以及jxl对excel的导入导出

    Apache POI与JXL:Excel导入导出的深入解析 在Java编程中,处理Microsoft Excel文件是一项常见的任务,Apache POI和JXL是两个广泛使用的库,分别提供了强大的功能来读取、写入和操作Excel文件。这两个库使得开发者...

    java poi jxl 操作excel的小例子

    - Java POI 是 Apache 软件基金会的一个开源项目,它提供了一套API,允许Java程序读写Microsoft Office格式的文件,包括Excel(.xls和.xlsx)。 - POI 提供了 HSSF 和 XSSF 两个主要的子项目,分别用于处理老版本...

    jxl poi java操作excel

    通过以上资源,开发者可以深入学习如何利用Java的jxl和Apache POI库进行Excel操作,从而提高工作效率,实现数据的高效管理和分析。无论你是要创建新的报表,还是从现有文件中提取数据,这些工具和知识都能为你提供...

    Excel生成导出JXL和POI两种方式小demo

    此时,开发者通常会借助编程语言来实现自动化操作,Java中就有两个常用的库,即JXL和Apache POI,用于读写Excel文件。下面我们将详细探讨这两个库以及如何使用它们生成Excel导出。 1. **JXL库**: JXL是Java Excel...

    java 操作Excel jxl poi 有例子

    总结来说,Java中的JXL和Apache POI都是强大的工具,它们让你能够灵活地处理Excel文件。JXL适合简单的需求,而Apache POI则更适合需要处理复杂Excel特性的场景。通过学习和实践这些库提供的API,你可以轻松地完成...

    JXL、POI实现Excel导入导出

    JXL和Apache POI是两个流行的Java库,专门用于读取、写入和操作Excel文件。下面将详细介绍这两个库以及如何利用它们实现Excel的导入导出功能。 ### JXL JXL(Java Excel API)是一个轻量级的Java库,它提供了读取...

    java使用poi包和jxl包操作excel的心得

    Java作为一款流行的企业级开发语言,提供了多种工具来操作Excel文件,其中最为常用的当属Apache POI与JXL这两个开源库。 #### 二、Apache POI简介 Apache POI是一个用于读写Microsoft Office格式文件的Java API,...

    非常简洁的java读写EXCEL源代码

    标题“非常简洁的java读写EXCEL源代码”以及描述中提到的“非常简单,还赠送个JXL的包”都暗示了我们将讨论如何使用JXL库进行Excel操作。 首先,让我们来了解JXL库。JXL是一个开源的Java库,用于读写Microsoft ...

    java 导出excel(单、多工作薄)

    本文将详细介绍如何使用Java的两个库,jxl和Apache POI,来实现单个和多个工作簿的Excel导出。 首先,我们来看jxl库。jxl是Java Excel API的简称,它允许Java程序读写Excel文件。在单个工作簿的导出中,jxl库提供了...

    java读写Excel(JXL)

    Java读写Excel是Java开发中常见的一项任务,特别是在数据处理...在不断发展的Java生态中,选择合适的Excel处理库是一项重要决策,根据项目需求和性能考虑,选择JXL、Apache POI或其他库,都是提升工作效率的有效途径。

    Java操作Excel(jxl.jar)

    然而,需要注意的是,jxl并不支持最新的.XLSM或.OOXML格式,对于这些格式,可能需要使用Apache POI库。 要开始使用jxl,首先需要在项目中引入jxl.jar。这可以通过在项目的类路径中添加该jar文件,或者在Maven或...

    android excel poi+jxl

    在Android平台上,处理Excel文件通常涉及使用第三方库,如Apache POI和JXL。这两个库都是Java编程语言的库,可以用于读写Microsoft Office格式的文件,包括Excel工作簿(.xls和.xlsx)。Apache POI是更为现代和功能...

Global site tag (gtag.js) - Google Analytics