]> source.dussan.org Git - poi.git/commitdiff
Fixed XSSFName and test cases
authorJosh Micich <josh@apache.org>
Tue, 18 Nov 2008 17:01:57 +0000 (17:01 +0000)
committerJosh Micich <josh@apache.org>
Tue, 18 Nov 2008 17:01:57 +0000 (17:01 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@718651 13f79535-47bb-0310-9956-ffa450edef68

src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFName.java
src/ooxml/testcases/org/apache/poi/xssf/usermodel/AllXSSFUsermodelTests.java
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFName.java

index d4b87ab6d7d2aa3827c641bb2f4d2ddfe3282d6c..ebdfdd7238ab3144532cd0a9d2c9ba81a9ebbbc1 100644 (file)
 ==================================================================== */
 package org.apache.poi.xssf.usermodel;
 
+import org.apache.poi.hssf.record.formula.Ptg;
+import org.apache.poi.ss.formula.FormulaParser;
+import org.apache.poi.ss.formula.FormulaType;
 import org.apache.poi.ss.usermodel.Name;
 import org.apache.poi.ss.util.AreaReference;
-import org.apache.poi.util.POILogFactory;
-import org.apache.poi.util.POILogger;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDefinedName;
 
 /**
@@ -163,7 +164,7 @@ public final class XSSFName implements Name {
      * @deprecated (Nov 2008) Misleading name. Use {@link #setFormula(String)} instead.
      */
     public void setReference(String ref){
-       setFormula(ref);
+        setFormula(ref);
     }
     /**
      * Returns the reference of this named range, such as Sales!C20:C30.
@@ -181,7 +182,16 @@ public final class XSSFName implements Name {
      * @throws IllegalArgumentException if the specified reference is unparsable
      */
     public void setFormula(String formulaText) {
-       // TODO parse formula and throw IllegalArgumentException if problem
+        XSSFEvaluationWorkbook fpb = XSSFEvaluationWorkbook.create(workbook);
+        Ptg[] ptgs;
+        try {
+            ptgs = FormulaParser.parse(formulaText, fpb, FormulaType.CELL); // TODO - use type NAMEDRANGE
+        } catch (RuntimeException e) {
+            if (e.getClass().getName().startsWith(FormulaParser.class.getName())) {
+                throw new IllegalArgumentException("Unparsable formula '" + formulaText + "'");
+            }
+            throw e;
+        }
         ctName.setStringValue(formulaText);
     }
 
index ca15cc8aee32ccde4e54fd24adb7dd3eb7f4ebd2..39d621865e9a0088cc546f170cb2da844081ebb2 100644 (file)
@@ -35,26 +35,33 @@ public final class AllXSSFUsermodelTests {
 
        public static Test suite() {
                TestSuite result = new TestSuite(AllXSSFUsermodelTests.class.getName());
-               result.addTestSuite(TestXSSFBorder.class);
-               result.addTestSuite(TestXSSFBugs.class);
-               result.addTestSuite(TestXSSFCellFill.class);
-               result.addTestSuite(TestXSSFHeaderFooter.class);
-               result.addTestSuite(TestXSSFSheetComments.class);
-               result.addTestSuite(TestColumnHelper.class);
-               result.addTestSuite(TestHeaderFooterHelper.class);
                result.addTestSuite(TestFormulaEvaluatorOnXSSF.class);
+               result.addTestSuite(TestSheetHiding.class);
+               result.addTestSuite(TestXSSFBugs.class);
                result.addTestSuite(TestXSSFCell.class);
                result.addTestSuite(TestXSSFCellStyle.class);
                result.addTestSuite(TestXSSFComment.class);
                result.addTestSuite(TestXSSFDialogSheet.class);
+               result.addTestSuite(TestXSSFDrawing.class);
+               result.addTestSuite(TestXSSFFont.class);
                result.addTestSuite(TestXSSFFormulaEvaluation.class);
                result.addTestSuite(TestXSSFHeaderFooter.class);
+               result.addTestSuite(TestXSSFHyperlink.class);
+               result.addTestSuite(TestXSSFName.class);
+               result.addTestSuite(TestXSSFPicture.class);
+               result.addTestSuite(TestXSSFPictureData.class);
+               result.addTestSuite(TestXSSFPrintSetup.class);
+               result.addTestSuite(TestXSSFRichTextString.class);
                result.addTestSuite(TestXSSFRow.class);
                result.addTestSuite(TestXSSFSheet.class);
                result.addTestSuite(TestXSSFWorkbook.class);
-                               
-               result.addTestSuite(TestXSSFFont.class);
-               result.addTestSuite(TestXSSFPrintSetup.class);
+
+               result.addTestSuite(TestXSSFBorder.class);
+               result.addTestSuite(TestXSSFCellFill.class);
+               result.addTestSuite(TestXSSFSheetComments.class);
+               
+               result.addTestSuite(TestColumnHelper.class);
+               result.addTestSuite(TestHeaderFooterHelper.class);
 
                return result;
        }
index 9a9f0849f3d0f5dcc45d10befebd9a2d9380e83f..3273bc03a2e3d3c6cf89662d9a47ae3d6f831c81 100755 (executable)
@@ -47,7 +47,7 @@ public class TestXSSFName extends TestCase {
         assertEquals(ref1, name1.getReference());\r
         assertEquals("Test1", name1.getSheetName());\r
 \r
-        String ref2 = "Testing Named Ranges!$A$1:$B$1";\r
+        String ref2 = "'Testing Named Ranges'!$A$1:$B$1";\r
         name1.setReference(ref2);\r
         //XSSFName#setReference stores the reference in canonical form and puts the sheet name in single quotes\r
         assertEquals("'Testing Named Ranges'!$A$1:$B$1", name1.getReference());\r