gpt4 book ai didi

java - 在 Apache POI 中移动单元格

转载 作者:太空宇宙 更新时间:2023-11-04 07:14:11 24 4
gpt4 key购买 nike

我正在尝试使用 Apache POI 实现 insertColumn 功能。据我所知,实现此目的的唯一方法是迭代 Sheet 中的所有 ,然后将每个 Row 中的每个 Cell 移动 1 Cell,然后在所需列索引处的行中创建一个新的 Cell

但是,我注意到只有 HSSFRowmoveCell() 方法,而 XSSFRow 没有 - moveCell 仅针对 HSSF 实现是否有原因?是否有原因无法将其添加到 Sheet interface 并针对两种 Sheet 类型实现(因为我们的代码正在使用接口(interface)来支持 .xls 和 .xslx 文件类型)?

编辑:

在实现逐个单元格、逐行移动后,很明显这不适用于公式,因为引用未更新。我终于找到了一个开源 LGPL 库,它能比 POI 更好地处理这个问题 - openxls。使用这个库几周后,我建议使用这个库。我们遇到了一个又一个的错误,修复错误并将其推送到公共(public) git 存储库所花费的时间比开发应用程序代码所花费的时间还要多。

最佳答案

您在查看两种工作表时看到这种不同行为的原因是 .xls 和 .xlsx 文件的结构方式截然不同。因此,简单地说“是否不可能将其添加到工作表界面”,是的,这是可能的,但添加此附加功能也可能非常重要。请参阅here详细描述了他们为何改用 .xlsx。如果您真的想变得有趣,请将您的whateverMyFileis.xlsx 文件的名称更改为whateverMyFileis.zip > 然后解压缩它,您可以看到他们如何分解文件内部所有内容的真实程度。然而,如果您对 .xls 执行此操作,则不会执行任何操作。

关于问题的第一部分,您询问了有关实现 insertColumn 功能的问题。这给您带来麻烦的原因是因为 Excel 工作表本质上是基于行的,并且 Apache-POI 没有为列提供太多 native 支持。几乎所有您想要做的涉及基于列的逻辑的事情都必须由您几乎全部实现。因此,为了回答您关于您能看到的唯一方法的问题,我同意,我不会立即看到更好的方法来创建专栏。

关于java - 在 Apache POI 中移动单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20223680/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com