Index: src/test/java/org/apache/tika/TestParsers.java
===================================================================
--- src/test/java/org/apache/tika/TestParsers.java	(revision 580602)
+++ src/test/java/org/apache/tika/TestParsers.java	(working copy)
@@ -114,11 +114,14 @@
     }
 
     public void testEXCELExtraction() throws Exception {
+    	final String expected="Numbers and their Squares Number Square 1.0 1.0 2.0 4.0 3.0 9.0 4.0 16.0 5.0 25.0 6.0 36.0 7.0 49.0 8.0 64.0 9.0 81.0 10.0 100.0 11.0 121.0 12.0 144.0 13.0 169.0 14.0 196.0 15.0 225.0 Written and saved in Microsoft Excel X for Mac Service Release 1.";
         File file = getTestFile("testEXCEL.xls");
         String s1 = ParseUtils.getStringContent(file, tc);
         String s2 = ParseUtils.getStringContent(file, tc,
                 "application/vnd.ms-excel");
         assertEquals(s1, s2);
+        assertTrue("Text does not contain '" + expected + "'",
+                s1.contains(expected));
     }
 
     public void testOOExtraction() throws Exception {
Index: src/main/java/org/apache/tika/parser/msexcel/ExcelExtractor.java
===================================================================
--- src/main/java/org/apache/tika/parser/msexcel/ExcelExtractor.java	(revision 580602)
+++ src/main/java/org/apache/tika/parser/msexcel/ExcelExtractor.java	(working copy)
@@ -39,10 +39,10 @@
   
   public String extractText(InputStream input) throws Exception {
     
-    String resultText = "";
+    StringBuilder resultText = new StringBuilder();
     HSSFWorkbook wb = new HSSFWorkbook(input);
     if (wb == null) {
-      return resultText;
+      return resultText.toString();
     }
     
     HSSFSheet sheet;
@@ -72,20 +72,19 @@
               } else
              */
             if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) {
-              resultText += cell.getStringCellValue() + " ";
+              resultText.append(cell.getRichStringCellValue().getString()).append(" ");
             } else if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
               Double d = new Double(cell.getNumericCellValue());
-              resultText += d.toString() + " ";
-            }
-            /* else if(cell.getCellType() == HSSFCell.CELL_TYPE_FORMULA){
-                 resultText += cell.getCellFormula() + " ";
-               } 
-             */
+              resultText.append(d).append(" ");
+            } else if(cell.getCellType() == HSSFCell.CELL_TYPE_FORMULA){
+              resultText.append(cell.getNumericCellValue()).append(" ");
+            } 
+            
           }
         }
       }
     }
-    return resultText;
+    return resultText.toString();
   }
   
 }
