Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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
Reference 在POI中,如何在不更改图纸引用的情况下重命名图纸?_Reference_Apache Poi_Formula_Renaming - Fatal编程技术网

Reference 在POI中,如何在不更改图纸引用的情况下重命名图纸?

Reference 在POI中,如何在不更改图纸引用的情况下重命名图纸?,reference,apache-poi,formula,renaming,Reference,Apache Poi,Formula,Renaming,我有SheetA,SheetX有公式参考。 现在我想用类似的SheetB替换SheetA(但有额外的行)。 为此,我将SheetA重命名为OldSheetA,然后将SheetB重命名为SheetA 这不起作用,因为SheetX上的公式引用现在指向OldSheetA而不是SheetA: ='SheetA'!G5 --becomes--> ='OldSheetA'!G5 我怎样才能保持引用指向SheetA 保持引用指向SheetA的唯一方法是避免重命名它 我想你唯一的选择是: 在完成所有

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

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

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

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

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

我想你唯一的选择是:

  • 在完成所有重命名后,在SheetX中重新定位引用。
    -或-
  • 要将数据从图纸a复制到新图纸,请在图纸a上就地创建图纸B的数据

  • 我没有找到一个使用POI的解决方案,但是这个简单的公式修正就解决了这个问题。在公式中使用INDIRECT()函数引用SheetA,这样它们就不会受到图纸重命名的影响

    而不是像这样的公式:

    =SheetA!B2
    
    更改为:

    =INDIRECT("SheetA!B2")
    

    对不起,这部分让人困惑,所以我把它删除了。谢谢@jmarkmurphy。我的工作簿是SXSSF(流式模型工作簿),所以我无法覆盖工作表的当前内容。我通过在公式中使用间接()函数找到了解决方案。例如,更改公式,=SWIBHist!B2至=间接(“开关列表!B2”)。