From 6b8378de600e8a19b82619d34644c4bb6bc85891 Mon Sep 17 00:00:00 2001 From: Avik Sengupta Date: Sun, 31 Aug 2003 06:19:41 +0000 Subject: [PATCH] Sync to REL_2_BR: HSSFCell.getStringValue now returns the formula result if it is a string. git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353327 13f79535-47bb-0310-9956-ffa450edef68 --- .../record/aggregates/FormulaRecordAggregate.java | 5 +++++ .../org/apache/poi/hssf/usermodel/HSSFCell.java | 6 ++++++ .../apache/poi/hssf/usermodel/TestFormulas.java | 14 ++++++++++++++ 3 files changed, 25 insertions(+) diff --git a/src/java/org/apache/poi/hssf/record/aggregates/FormulaRecordAggregate.java b/src/java/org/apache/poi/hssf/record/aggregates/FormulaRecordAggregate.java index e3eb40e201..761d821dcf 100644 --- a/src/java/org/apache/poi/hssf/record/aggregates/FormulaRecordAggregate.java +++ b/src/java/org/apache/poi/hssf/record/aggregates/FormulaRecordAggregate.java @@ -266,5 +266,10 @@ public class FormulaRecordAggregate return true; } + + public String getStringValue() { + if(stringRecord==null) return null; + return stringRecord.getString(); + } } diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java b/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java index 394c60c7dc..00c0a32d2d 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java @@ -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; } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestFormulas.java b/src/testcases/org/apache/poi/hssf/usermodel/TestFormulas.java index 0baf1a3b67..5b75303e12 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestFormulas.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestFormulas.java @@ -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");