当前位置: 首页 > 面试题库 >

什么是在Java中读取Excel工作表的更好的API-JXL或Apache POI

湛安宁
2023-03-14
问题内容

这两个API中哪个更容易读取/写入/编辑Excel工作表?这些API是否不支持CSV扩展?

使用JXL进行file.xls和file.xlsx时,出现如下异常:

jxl.read.biff.BiffException: Unable to recognize OLE stream
    at jxl.read.biff.CompoundFile.<init>(CompoundFile.java:116)
    at jxl.read.biff.File.<init>(File.java:127)
    at jxl.Workbook.getWorkbook(Workbook.java:268)
    at core.ReadXLSheet.contentReading(ReadXLSheet.java:46)
    at core.ReadXLSheet.init(ReadXLSheet.java:22)
    at core.ReadXLSheet.main(ReadXLSheet.java:72)

.xls和.xlsx扩展名都可以。我使用的Java版本是:JDK1.6


问题答案:

我已经使用了JXL(现在称为“ JExcel”)和Apache
POI
。最初,我使用JXL,但现在使用Apache POI。

首先,这两个API具有相同的最终功能:

  • 两者都是免费的
  • 单元格样式:对齐方式,背景(颜色和图案),边框(类型和颜色),字体支持(字体名称,颜色,大小,粗体,斜体,删除线,下划线)
  • 公式
  • 超连结
  • 合并的细胞区域
  • 行和列的大小
  • 数据格式:数字和日期
  • 单元格内的文字换行
  • 冻结窗格
  • 页眉/页脚支持
  • 读取/写入现有和新电子表格
  • 两者都试图将现有对象尽可能完整地保留在电子表格中。

但是,有许多差异:

  • 也许最重要的区别是Java JXL不支持Excel 2007+“ .xlsx”格式。它仅支持旧的BIFF(二进制)“。xls”格式。Apache POI通过通用设计支持这两种方法。
  • 此外,JXL API的Java部分最近一次更新是在2009年(我写这篇文章的时间是3年零4个月),尽管它看起来像是C#API。Apache POI得到积极维护。
  • JXL不支持条件格式,Apache POI不支持条件格式,尽管这并不重要,因为您可以使用自己的代码有条件地格式化单元格。
  • JXL不支持 文本 格式,即文本字符串中不同格式; Apache POI确实支持它。
  • JXL仅支持某些文本旋转:水平/垂直,+ /-45度和堆叠;Apache POI支持任意整数度数加上堆叠度。
  • JXL不支持工程图形状。Apache POI可以。
  • JXL支持大多数页面设置设置,例如横向/纵向,边距,纸张尺寸和缩放。Apache POI支持所有这些功能以及重复行和列。
  • JXL不支持拆分窗格。Apache POI可以。
  • JXL不支持Chart的创建或操纵;Apache POI尚不支持该功能,但API逐渐形成。
  • 与JXL相比,Apache POI提供了更广泛的文档和示例集。

此外,POI不仅包含主要的“用户模型” API,而且还包含基于事件的API(如果您要做的只是读取电子表格内容)。

总之,由于更好的文档,更多的功能,活跃的开发以及Excel 2007+格式支持,我使用Apache POI。



 类似资料:
  • 问题内容: 我遵循了使用Apache POI XSSF构造工作簿的简单指南。遵循相同的指南,我能够写出一张Excel工作表,但是,当尝试从其中读取数据时,我收到了代码后显示的错误。 码: 错误输出: 线程“主”中的异常java.lang.NoSuchFieldError:org.apache.poi.openxml4j.opc.internal.ZipHelper.verifyZipHeader(

  • 问题内容: 我想将工作表从现有的XLS文档复制到新的文档中,再复制到新位置。 我如何用JXL做到这一点? 编辑: 不是,所以我无法使用该方法。 有什么方法可以向工作簿添加单元格/ 工作表吗? edit2: 那么我是否必须将工作簿的可写副本创建到另一个文件? ( edit3: 或者还有其他免费的lib可以做到这一点吗?) 更新: 当我运行此代码时,我会在网上看到异常 如果我删除此行并将代码更改为 那

  • 似乎这里和这里已经有了答案,但是,这些解决方案都不适合我。 我正在努力 不管怎样,最后仍然包含第一张而不是第二张。我使用的是Python 3和Pandas 0.20。1(水蟒发行版)。我错过了什么?如何将第二张图纸加载到?

  • 如何在Katalon Studio中从excel工作表(工作表1、工作表2...等)中读取数据。我可以从一张表中读取数据。但是我面临着多张纸的困难。

  • 问题内容: 我正在使用NetBeans 6.9.1使用Spring / Hibernet。我正在尝试读取Excel文件(.xlsx- Office 2007)。读取Excel文件的代码如下,使用来存储Excel工作表中的数据。 以下是我的方法,该方法调用上述方法以读取指定的Excel文件 在执行此代码时,将引发以下异常。 提供的数据似乎在Office 2007+ XML中。您正在调用POI中与OL

  • 本文向大家介绍java 中JXL操作Excel实例详解,包括了java 中JXL操作Excel实例详解的使用技巧和注意事项,需要的朋友参考一下 JXL操作Excel 前言: jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可 供使用,一个是POI,一个是jExcelAPI。其中功能相对POI比较弱一点。但jExcelAPI对中文支持非常好,API是纯Ja