Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将JXLS从版本1迁移到版本2_Java_Excel_Jxls - Fatal编程技术网

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

Java 如何将JXLS从版本1迁移到版本2,java,excel,jxls,Java,Excel,Jxls,JXLS 2与版本1不向后兼容。没有升级说明,虽然我可以使用第二版,但我有两个问题 版本1不需要使用注释标记,但现在我无法在没有注释标记的情况下生成输出 Java代码必须指定要写入结果的工作表位置,在版本1中,输出写在模板之上,不需要复制Excel和Java代码中的模板设置 如果我找不到解决这两个问题的方法,我将不得不改变每一个模板来使用注释。但更糟糕的是,我还必须让java代码知道模板工作表的布局。我不明白为什么这是默认行为。有没有办法让版本2的行为更像版本1 版本1不需要使用注释标记,但

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

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

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

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

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

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

  • 使用(可能不是您想要的方式)

  • 使用JavaAPI构建命令(可能不是您想要的方式)

  • 创建您自己的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);
            }
    
    因此,只需在其起始单元格处应用一个区域


    如果您希望这是一种默认行为,您可以在

    中提出改进,感谢Leonid分享这些选项。我试着用xlsArea使用这个技巧,只要你不使用SXSSF,它就可以工作。使用SXSSF时,如果该区域中提供了标头部分,则会报告该行已写入磁盘。不确定这是一个bug还是按预期工作。目前SXSSF在Jxls中只有基本支持。但它将在即将发布的版本中得到改进。