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