]> source.dussan.org Git - poi.git/commitdiff
Sync to REL_2_BR: HSSFCell.getStringValue now returns the formula result if it is...
authorAvik Sengupta <avik@apache.org>
Sun, 31 Aug 2003 06:19:41 +0000 (06:19 +0000)
committerAvik Sengupta <avik@apache.org>
Sun, 31 Aug 2003 06:19:41 +0000 (06:19 +0000)
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353327 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/hssf/record/aggregates/FormulaRecordAggregate.java
src/java/org/apache/poi/hssf/usermodel/HSSFCell.java
src/testcases/org/apache/poi/hssf/usermodel/TestFormulas.java

index e3eb40e2014fdedcaa5c449c15812ffac994c5dd..761d821dcfc7e924a4382658fd703c054973781f 100644 (file)
@@ -266,5 +266,10 @@ public class FormulaRecordAggregate
 
       return true;
    }
+   
+   public String getStringValue() {
+        if(stringRecord==null) return null;
+        return stringRecord.getString();
+   }
 
 }
index 394c60c7dce454903365e598525ad03627e3d38e..00c0a32d2d6598d3c17ba37a4e593bb072e53b15 100644 (file)
@@ -338,6 +338,7 @@ public class HSSFCell
 
             case CELL_TYPE_FORMULA :
                 cellValue = (( FormulaRecordAggregate ) cval).getFormulaRecord().getValue();
+                stringValue=((FormulaRecordAggregate) cval).getStringValue();
                 break;
 
             case CELL_TYPE_BOOLEAN :
@@ -820,6 +821,7 @@ public class HSSFCell
     /**
      * get the value of the cell as a string - for numeric cells we throw an exception.
      * For blank cells we return an empty string.
+     * For formulaCells that are not string Formulas, we return empty String
      */
 
     public String getStringCellValue()
@@ -843,6 +845,10 @@ public class HSSFCell
             throw new NumberFormatException(
                 "You cannot get a string value from an error cell");
         }
+        if (cellType == CELL_TYPE_FORMULA) 
+        {
+            if (stringValue==null) return "";
+        }
         return stringValue;
     }
 
index 0baf1a3b6709e0ccce3d2e12093e33ad2f77b681..5b75303e1252598c70bf89403d93bb9a9cb0767a 100644 (file)
@@ -1106,6 +1106,20 @@ extends TestCase {
         assertEquals(4d, d2.getNumericCellValue(), 1e-9);
     }
 
+    public void testStringFormulaRead() throws IOException {
+        File dir = new File(System.getProperty("HSSF.testdata.path"));
+        File xls = new File(dir, "StringFormulas.xls");
+        FileInputStream in = new FileInputStream(xls);
+        HSSFWorkbook w;
+        try {
+            w = new HSSFWorkbook(in);
+        } finally {
+            in.close();
+        }
+        HSSFCell c = w.getSheetAt(0).getRow(0).getCell((short)0);
+        assertEquals("String Cell value","XYZ",c.getStringCellValue());
+    }
+    
     public static void main(String [] args) {
         System.out
         .println("Testing org.apache.poi.hssf.usermodel.TestFormulas");