]> source.dussan.org Git - poi.git/commitdiff
bug 61474, github #81: implement updateNamedRanges for ColumnShifter
authorJaven O'Neal <onealj@apache.org>
Sat, 4 Nov 2017 07:42:33 +0000 (07:42 +0000)
committerJaven O'Neal <onealj@apache.org>
Sat, 4 Nov 2017 07:42:33 +0000 (07:42 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1814258 13f79535-47bb-0310-9956-ffa450edef68

src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFColumnShifter.java
src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFRowColShifter.java
src/ooxml/java/org/apache/poi/xssf/usermodel/helpers/XSSFRowShifter.java

index de51707b11259d410db229bc34a47be5768c42ba..b6643541ae532fa28783ca5e519fe81f22cf968f 100644 (file)
@@ -43,10 +43,9 @@ public final class XSSFColumnShifter extends ColumnShifter {
     /**
      * Updated named ranges
      */
-    @NotImplemented
     @Override
     public void updateNamedRanges(FormulaShifter formulaShifter) {
-        throw new NotImplementedException("updateNamedRanges");
+        XSSFRowColShifter.updateNamedRanges(sheet, formulaShifter);
     }
 
     /**
index ef450a1bea1a48756381945fa866439867004af7..399363185c1e8043c0dab76ace5b10dee12f3dfd 100644 (file)
@@ -18,6 +18,7 @@
 package org.apache.poi.xssf.usermodel.helpers;
 
 import org.apache.poi.ss.formula.*;
+import org.apache.poi.ss.formula.ptg.Ptg;
 import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.ss.usermodel.helpers.BaseRowColShifter;
 import org.apache.poi.ss.util.CellRangeAddress;
@@ -37,6 +38,25 @@ import java.util.List;
 
     private XSSFRowColShifter() { /*no instances for static classes*/}
 
+    /**
+     * Updated named ranges
+     */
+    /*package*/ static void updateNamedRanges(Sheet sheet, FormulaShifter formulaShifter) {
+        Workbook wb = sheet.getWorkbook();
+        XSSFEvaluationWorkbook fpb = XSSFEvaluationWorkbook.create((XSSFWorkbook) wb);
+        for (Name name : wb.getAllNames()) {
+            String formula = name.getRefersToFormula();
+            int sheetIndex = name.getSheetIndex();
+            final int rowIndex = -1; //don't care, named ranges are not allowed to include structured references
+
+            Ptg[] ptgs = FormulaParser.parse(formula, fpb, FormulaType.NAMEDRANGE, sheetIndex, rowIndex);
+            if (formulaShifter.adjustFormula(ptgs, sheetIndex)) {
+                String shiftedFmla = FormulaRenderer.toFormulaString(fpb, ptgs);
+                name.setRefersToFormula(shiftedFmla);
+            }
+        }
+    }
+
     /*package*/ static void updateHyperlinks(Sheet sheet, FormulaShifter formulaShifter) {
         int sheetIndex = sheet.getWorkbook().getSheetIndex(sheet);
         List<? extends Hyperlink> hyperlinkList = sheet.getHyperlinkList();
index 7ef0b3f4752358c91d91acd868bfd7742e8a8ee3..402bd612e8e84bf19a53c62616d12a214c25c0a2 100644 (file)
@@ -65,19 +65,7 @@ public final class XSSFRowShifter extends RowShifter {
      */
     @Override
     public void updateNamedRanges(FormulaShifter formulaShifter) {
-        Workbook wb = sheet.getWorkbook();
-        XSSFEvaluationWorkbook fpb = XSSFEvaluationWorkbook.create((XSSFWorkbook) wb);
-        for (Name name : wb.getAllNames()) {
-            String formula = name.getRefersToFormula();
-            int sheetIndex = name.getSheetIndex();
-            final int rowIndex = -1; //don't care, named ranges are not allowed to include structured references
-
-            Ptg[] ptgs = FormulaParser.parse(formula, fpb, FormulaType.NAMEDRANGE, sheetIndex, rowIndex);
-            if (formulaShifter.adjustFormula(ptgs, sheetIndex)) {
-                String shiftedFmla = FormulaRenderer.toFormulaString(fpb, ptgs);
-                name.setRefersToFormula(shiftedFmla);
-            }
-        }
+        XSSFRowColShifter.updateNamedRanges(sheet, formulaShifter);
     }
 
     /**