在 POI 中,如何在不更改对它的引用的情况下重命名 sheet?

In POI, how to rename a sheet without changing references to it?

我有 SheetA,SheetX 有公式引用。 现在我想用类似的 SheetB 替换 SheetA(但有额外的行)。 为此,我将 SheetA 重命名为 OldSheetA,然后将 SheetB 重命名为 SheetA。

这不起作用,因为 SheetX 上的公式引用现在指向 OldSheetA 而不是 SheetA:

='SheetA'!G5  --becomes--> ='OldSheetA'!G5 

我怎样才能保持指向 SheetA 的引用?

保持引用指向 SheetA 的唯一方法是避免重命名它。

我猜你唯一的选择是:

  1. 在所有重命名完成后重新指向 SheetX 中的引用。
    -或者-
  2. 要将数据从 SheetA 复制到新的 sheet,然后在 SheetA 上创建 SheetB 的数据

我没有找到使用 POI 的解决方案,但这个简单的公式修复可以解决问题。在公式中使用 INDIRECT() 函数来引用 SheetA,这样它们就不会受到 sheet 重命名的影响。

而不是这样的公式:

=SheetA!B2

改为:

=INDIRECT("SheetA!B2")