]> source.dussan.org Git - poi.git/commitdiff
#57642 Fix setSheetName with ISERROR on XSSF
authorNick Burch <nick@apache.org>
Fri, 24 Apr 2015 02:13:07 +0000 (02:13 +0000)
committerNick Burch <nick@apache.org>
Fri, 24 Apr 2015 02:13:07 +0000 (02:13 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1675745 13f79535-47bb-0310-9956-ffa450edef68

src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFFormulaUtils.java
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java

index 776210de386574f472039ed39bd509a48ec7c498..a9d995fb729420f11440c7c754808e3e9835cd12 100644 (file)
@@ -24,6 +24,7 @@ import org.apache.poi.ss.formula.FormulaRenderer;
 import org.apache.poi.ss.formula.FormulaType;
 import org.apache.poi.ss.formula.ptg.Ptg;
 import org.apache.poi.ss.formula.ptg.Pxg;
+import org.apache.poi.ss.formula.ptg.Pxg3D;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
@@ -125,9 +126,17 @@ public final class XSSFFormulaUtils {
         if (ptg instanceof Pxg) {
             Pxg pxg = (Pxg)ptg;
             if (pxg.getExternalWorkbookNumber() < 1) {
-                if (pxg.getSheetName().equals(oldName)) {
+                if (pxg.getSheetName() != null &&
+                        pxg.getSheetName().equals(oldName)) {
                     pxg.setSheetName(newName);
                 }
+                if (pxg instanceof Pxg3D) {
+                    Pxg3D pxg3D = (Pxg3D)pxg;
+                    if (pxg3D.getLastSheetName() != null &&
+                            pxg3D.getLastSheetName().equals(oldName)) {
+                        pxg3D.setLastSheetName(newName);
+                    }
+                }
             }
         }
     }
index 6a3ddafa3d0fe45f7a34c1f6b4ec17cd2cfb1fe5..6a09b9033d1073eb6efe226af518db6d8c4c1477 100644 (file)
@@ -2367,4 +2367,20 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues {
                assertNotNull(bgColor);
                assertEquals("FF00FFFF", fgColor.getARGBHex());
        }
+
+    @Test
+    public void bug57642() throws Exception {
+        XSSFWorkbook wb = new XSSFWorkbook();
+        XSSFSheet s = wb.createSheet("TestSheet");
+        XSSFCell c = s.createRow(0).createCell(0);
+        c.setCellFormula("ISERROR(TestSheet!A1)");
+        c = s.createRow(1).createCell(1);
+        c.setCellFormula("ISERROR(B2)");
+
+        wb.setSheetName(0, "CSN");
+        c = s.getRow(0).getCell(0);
+        assertEquals("ISERROR(CSN!A1)", c.getCellFormula());
+        c = s.getRow(1).getCell(1);
+        assertEquals("ISERROR(B2)", c.getCellFormula());
+    }
 }