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

标签 java excel apache-poi jxl

这 2 个 API 中哪一个更易于读取/写入/编辑 Excel 表格? 这些 API 不支持 CSV 扩展吗?

对 file.xls 和 file.xlsx 使用 JXL,我得到一个异常,例如:

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 具有相同的最终功能:

  • 两者都是免费的
  • 单元格样式:对齐、背景(颜色和图案)、边框 (类型和颜色),字体支持(字体名称,颜色,大小,粗体, 斜体、删除线、下划线)
  • 公式
  • 超链接
  • 合并的单元格区域
  • 行和列的大小
  • 数据格式:数字和日期
  • 单元格内的文字环绕
  • 卡住 Pane
  • 页眉/页脚支持
  • 读取/写入现有和新的电子表格
  • 两者都试图在他们读取的电子表格中尽可能保持现有对象的完整性。

但是,有很多不同之处:

  • 也许最显着的区别是Java JXL不支持Excel 2007+“.xlsx”格式;它只支持旧的 BIFF(二进制)“.xls”格式。 Apache POI 采用通用设计同时支持两者。
  • 此外,JXL API 的 Java 部分最后一次更新是在 2009 年(我写这篇文章时是 3 年零 4 个月前),尽管看起来有一个 C# API。 Apache POI 得到积极维护。
  • JXL 不支持条件格式,Apache POI 支持,尽管这并不重要,因为您可以使用自己的代码有条件地格式化单元格。
  • JXL 不支持 rich text 格式,即文本字符串中的不同格式; Apache POI 确实支持它。
  • JXL 仅支持某些文本旋转:水平/垂直、+/- 45 度和堆叠; Apache POI 支持任意整数度数加堆叠。
  • JXL 不支持绘制形状; Apache POI 可以。
  • JXL 支持大多数页面设置设置,例如横向/纵向、边距、纸张大小和缩放。 Apache POI 支持所有这些以及重复行和列。
  • JXL 不支持拆分 Pane ; Apache POI 可以。
  • JXL 不支持图表创建或操作; Apache POI 中还没有这种支持,但 API 正在慢慢形成。
  • Apache POI 提供的文档和示例比 JXL 更丰富。

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

总之,由于更好的文档、更多的功能、积极的开发和 Excel 2007+ 格式支持,我使用 Apache POI。

关于java - 在 Java 中读取 Excel 工作表的更好 API - JXL 或 Apache POI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14980717/

相关文章:

java - 从使用字节流写入的文件中读取

Excel公式获取季节名称?

java - 无法使用 Apache-Poi API 读取特定类型的 Excel 文件

java - 如何使用 HSSF(Apache POI)在现有 excel 的两行之间插入一行

Java代码不打印Excel文件中的所有行

Java - 将选项卡添加到 JTabbedPane 导致 StackOverflowError(禁用触发 ChangeEvent?)

java - 控制 Mac 上 Java/Swing 中的按键使用

java - 如何从 java 执行 shell 脚本,它会重启 tomcat 并继续运行

vba - 需要按顺序写出月份

vba - 使用 VBA 和 Selenium 驱动网站,pt2