如何将 JXLS 从版本 1 迁移到版本 2

dco*_*led 5 java excel jxls

JXLS 2 不向后兼容版本 1。没有升级说明,虽然我可以使用版本 2,但我遇到了两个问题。

  • 版本 1 不需要使用注释标签,但现在我无法在没有它们的情况下生成输出。

  • Java 代码必须指定在哪个工作表位置写入结果,在版本 1 中,输出写入在模板之上,不需要在 Excel 和 Java 代码中重复模板设置。

如果我找不到解决这两个问题的方法,我将不得不更改每个模板以使用注释。但更糟糕的是,我还必须让我的 java 代码了解模板工作表布局。我不明白为什么这是默认行为。有没有办法让版本 2 的行为更像版本 1?

Leo*_*hyn 4

版本 1 不需要使用注释标签,但现在我无法在没有它们的情况下生成输出。

这并不完全正确。您可以选择不使用XlsCommentAreaBuilder。在这种情况下你有 3 个选择

  1. 使用XmlAreaBuilder(可能不是您想要的方式)

  2. 使用 Java API 构建命令(可能不是您想要的方式)

  3. 创建您自己的Jxls1TagCommandAreaBuilder,它将根据 Jxls-1 标记符号构建命令(并将其贡献给 jxls 核心)

3 选项可能是最好的,因为您将能够将 Jxls-1 模板与 Jxls-2 一起使用而无需进行任何更改。当然,这不是微不足道的,但应该是可能的。

Java 代码必须指定在哪个工作表位置写入结果,在版本 1 中,输出写入在模板之上,不需要在 Excel 和 Java 代码中重复模板设置。

要在这里获得 Jxls-1 行为,您可以执行以下操作

        for (Area xlsArea : xlsAreaList) {
            xlsArea.applyAt(
                     new CellRef(xlsArea.getStartCellRef().getCellName()), context);
        }
Run Code Online (Sandbox Code Playgroud)

因此,您只需在其起始单元格处应用一个区域即可。

如果您希望这是默认行为,您可以在jxls 问题跟踪器中提出改进