在 java 中读取 Excel 工作表的更好的 API - JXL 或 Apache POI [关闭]

2023-12-28

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 http://sourceforge.net/projects/jexcelapi/(现在为“JExcel”)和阿帕奇兴趣点 http://poi.apache.org/。起初我使用JXL,但现在我使用Apache POI。

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

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

然而,也有很多不同之处:

  • 也许最显着的区别是 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 不支持分割窗格; Apache POI 可以。
  • JXL 不支持图表创建或操作; Apache POI 中尚未提供这种支持,但 API 正在慢慢开始形成。
  • Apache POI 拥有比 JXL 更广泛的文档和示例集。

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 java 中读取 Excel 工作表的更好的 API - JXL 或 Apache POI [关闭] 的相关文章

  • Android - 如何访问 onResume 中 onCreate 中实例化的 View 对象?

    In my onCreate 方法 我正在实例化一个ImageButton View public void onCreate Bundle savedInstanceState super onCreate savedInstanceSt
  • Google 地图查询返回的 JSON 包含像 \x26 这样的编码字符(如何解码?)

    在 Java 应用程序中 我获取 JSON 来自 Google 地图 其中包含以下字符 x26我想将其转换为其原始字符 据我所知 这是一个 UTF 8 表示法 但我不完全确定 在源 JSON 中 可能会出现各种编码字符 例如 x3c div
  • 如何在 Eclipse 中用阿拉伯语读写

    我在 eclipse 中编写了这段代码来获取一些阿拉伯语单词 然后打印它们 public class getString public static void main String args throws Exception PrintS
  • 如何打印整个字符串池?

    我想打印包含文字的整个字符串池String使用添加的对象intern 就在垃圾收集之前 JDK有没有隐式的方法来进行这样的操作 我们如何检查字符串池 EDIT The comment suggests that there may be a
  • java.lang.Class: 在 java 程序中初始化 log4j 属性文件时出错

    我正在尝试使用 log4j 运行独立的 java 程序 但在调试时收到以下消息 控制台上没有 log4j 相关日志 log Logger 1343 java lang Class ERROR in 18b4aac2 有人可以建议这里出了什么
  • Java 创建浮雕(红/蓝图像)

    我正在编写一个 Java 游戏引擎 http victoryengine org http victoryengine org 并且我一直在尝试生成具有深度的 3D 图像 您可以使用那些红色 蓝色眼镜看到 我正在使用 Java2D 进行图形
  • 如何将 Spotlight for Help 插入本地化的 macOS 应用程序?

    我正在 macOS 上使用 Swing GUI 框架实现 Java 应用程序 当使用system外观和感觉以及screen菜单栏 Swing 自动插入一个搜索栏 called 聚光灯寻求帮助 https developer apple co
  • 如何将 XMP XML 块序列化为现有的 JPEG 图像?

    我有许多 JPEG 图像 其中包含损坏的 XMP XML 块 我可以轻松修复这些块 但我不确定如何将 固定 数据写回图像文件 我目前正在使用 JAVA 但我愿意接受任何能让这项任务变得容易的事情 这是目标关于 XMP XML 的另一个问题
  • Java替换特定字符

    这是我在这个网站上的第一个问题 所以我会尽量不要成为一个十足的菜鸟 我目前正在用java 创建刽子手游戏 所以我问你的问题是我们是否被赋予了 幽灵 这个词 并将 Ghost 替换为 hiddenWord ghost length for i
  • 参数动态时如何构建 JPQL 查询?

    我想知道是否有一个好的解决方案来构建基于过滤器的 JPQL 查询 我的查询太 富有表现力 我无法使用 Criteria 就像是 query Select from Ent if parameter null query WHERE fiel
  • 覆盖 MATLAB 默认静态 javaclasspath 的最佳方法

    MATLAB 配置为在搜索用户可修改的动态路径之前搜索其静态 java 类路径 不幸的是 静态路径包含相当多非常旧的公共库 因此如果您尝试使用新版本 您可能最终会加载错误的实现并出现错误 例如 静态路径包含 google collectio
  • 让JScrollPane控制多个组件

    对于我的应用程序 我正在设计一个脚本编辑器 目前我有一个JPanel其中包含另一个JPanel保存行号 位于左侧 以及JTextArea用于允许用户输入代码 位于右侧 目前 我已经实施了JScrollPane on the JTextAre
  • OpenJDK 版本控制

    上下文 我想确保我们系统上安装的 Java 不受 CVE 2022 21449 的影响 java version 给出 openjdk version 11 0 7 2020 04 14 LTS OpenJDK Runtime Enviro
  • 如何为 Jackson 编写一个包罗万象的(反)序列化器

    当您提前知道类型时 编写自定义序列化器非常容易 例如 MyType一个人可以写一个MyTypeSerializer extends StdSerializer
  • 从 Stax XMLStreamReader 读取以解组部分

    我正在使用 Stax 游标 API 从大型 xml 文件中提取数据 当前 我转到特殊标签的开头并使用 JAXB 解组该标签 这对于格式良好的 xml 文件效果很好 但不久前我有一个文档 其中数十万个标签中有一个未关闭 JAXB 使用 XML
  • ExceptionHandler 不适用于 Throwable

    我们的应用程序是基于 Spring MVC 的 REST 应用程序 我正在尝试使用 ExceptionHandler 注释来处理所有错误和异常 I have ExceptionHandler Throwable class public R
  • 阻止 OSX 变音符号为所有用户禁用 Java 中的 KeyBindings?

    注 我知道这个问题 https stackoverflow com questions 40335285 java keybinds stop working after holding down a key用户必须输入终端命令才能解决此问
  • Spock模拟inputStream导致无限循环

    我有一个代码 gridFSFile inputStream bytes 当我尝试这样测试时 given def inputStream Mock InputStream def gridFSDBFile Mock GridFSDBFile
  • Spring Boot MSSQL Kerberos 身份验证

    目前在我的春季靴子中application properties文件中 我指定以下行来连接到 MSSql 服务器 spring datasource url jdbc sqlserver localhost databaseName spr
  • Java 推断泛型类型

    我正在寻找类似的推断捕获泛型类型的概念 类似于以下方法片段 但不是捕获泛型类型的类 public

随机推荐