You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ni...@apache.org on 2008/06/28 19:12:39 UTC

svn commit: r672553 - in /poi/trunk/src: documentation/content/xdocs/changes.xml documentation/content/xdocs/status.xml examples/src/org/apache/poi/hssf/eventusermodel/examples/XLS2CSVmra.java

Author: nick
Date: Sat Jun 28 10:12:38 2008
New Revision: 672553

URL: http://svn.apache.org/viewvc?rev=672553&view=rev
Log:
Update changelog about EventWorkbookBuilder, and tweak XLS2CSVmra to use it if formulas required

Modified:
    poi/trunk/src/documentation/content/xdocs/changes.xml
    poi/trunk/src/documentation/content/xdocs/status.xml
    poi/trunk/src/examples/src/org/apache/poi/hssf/eventusermodel/examples/XLS2CSVmra.java

Modified: poi/trunk/src/documentation/content/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/poi/trunk/src/documentation/content/xdocs/changes.xml?rev=672553&r1=672552&r2=672553&view=diff
==============================================================================
--- poi/trunk/src/documentation/content/xdocs/changes.xml (original)
+++ poi/trunk/src/documentation/content/xdocs/changes.xml Sat Jun 28 10:12:38 2008
@@ -36,8 +36,8 @@
     </devs>
 
 		<!-- Don't forget to update status.xml too! -->
-        <release version="3.2-alpha1" date="2008-??-??">
-          <action dev="POI-DEVELOPERS" type="add"><!-- to keep forrest dtd quiet--></action>
+        <release version="3.1.1-alpha1" date="2008-??-??">
+           <action dev="POI-DEVELOPERS" type="add">Support for parsing formulas during EventUserModel processing, via the new EventWorkbookBuilder</action>
         </release>
         <release version="3.1-final" date="2008-06-29">
            <action dev="POI-DEVELOPERS" type="fix">30978 - Fixed re-serialization of tRefErr3d and tAreaErr3d</action>

Modified: poi/trunk/src/documentation/content/xdocs/status.xml
URL: http://svn.apache.org/viewvc/poi/trunk/src/documentation/content/xdocs/status.xml?rev=672553&r1=672552&r2=672553&view=diff
==============================================================================
--- poi/trunk/src/documentation/content/xdocs/status.xml (original)
+++ poi/trunk/src/documentation/content/xdocs/status.xml Sat Jun 28 10:12:38 2008
@@ -33,8 +33,8 @@
 
 	<!-- Don't forget to update changes.xml too! -->
     <changes>
-        <release version="3.2-alpha1" date="2008-??-??">
-          <action dev="POI-DEVELOPERS" type="add"><!-- to keep forrest dtd quiet--></action>
+        <release version="3.1.1-alpha1" date="2008-??-??">
+           <action dev="POI-DEVELOPERS" type="add">Support for parsing formulas during EventUserModel processing, via the new EventWorkbookBuilder</action>
         </release>
         <release version="3.1-final" date="2008-06-29">
            <action dev="POI-DEVELOPERS" type="fix">30978 - Fixed re-serialization of tRefErr3d and tAreaErr3d</action>

Modified: poi/trunk/src/examples/src/org/apache/poi/hssf/eventusermodel/examples/XLS2CSVmra.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/hssf/eventusermodel/examples/XLS2CSVmra.java?rev=672553&r1=672552&r2=672553&view=diff
==============================================================================
--- poi/trunk/src/examples/src/org/apache/poi/hssf/eventusermodel/examples/XLS2CSVmra.java (original)
+++ poi/trunk/src/examples/src/org/apache/poi/hssf/eventusermodel/examples/XLS2CSVmra.java Sat Jun 28 10:12:38 2008
@@ -30,9 +30,11 @@
 import org.apache.poi.hssf.eventusermodel.HSSFListener;
 import org.apache.poi.hssf.eventusermodel.HSSFRequest;
 import org.apache.poi.hssf.eventusermodel.MissingRecordAwareHSSFListener;
+import org.apache.poi.hssf.eventusermodel.EventWorkbookBuilder.SheetRecordCollectingListener;
 import org.apache.poi.hssf.eventusermodel.dummyrecord.LastCellOfRowDummyRecord;
 import org.apache.poi.hssf.eventusermodel.dummyrecord.MissingCellDummyRecord;
 import org.apache.poi.hssf.model.FormulaParser;
+import org.apache.poi.hssf.record.BOFRecord;
 import org.apache.poi.hssf.record.BlankRecord;
 import org.apache.poi.hssf.record.BoolErrRecord;
 import org.apache.poi.hssf.record.CellValueRecordInterface;
@@ -46,6 +48,7 @@
 import org.apache.poi.hssf.record.SSTRecord;
 import org.apache.poi.hssf.record.StringRecord;
 import org.apache.poi.hssf.usermodel.HSSFDateUtil;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 
 /**
@@ -64,6 +67,10 @@
 	/** Should we output the formula, or the value it has? */
 	private boolean outputFormulaValues = true;
 	
+	/** For parsing Formulas */
+	private SheetRecordCollectingListener workbookBuildingListener;
+	private HSSFWorkbook stubWorkbook;
+	
 	// Records we pick up as we process
 	private SSTRecord sstRecord;
 	private FormatTrackingHSSFListener formatListener;
@@ -108,7 +115,13 @@
 		
 		HSSFEventFactory factory = new HSSFEventFactory();
 		HSSFRequest request = new HSSFRequest();
-		request.addListenerForAllRecords(formatListener);
+		
+		if(outputFormulaValues) {
+			request.addListenerForAllRecords(formatListener);
+		} else {
+			workbookBuildingListener = new SheetRecordCollectingListener(formatListener);
+			request.addListenerForAllRecords(workbookBuildingListener);
+		}
 		
 		factory.processWorkbookEvents(request, fs);
 	}
@@ -124,6 +137,16 @@
 		
 		switch (record.getSid())
         {
+		case BOFRecord.sid:
+			BOFRecord br = (BOFRecord)record;
+			if(br.getType() == BOFRecord.TYPE_WORKSHEET) {
+				// Create sub workbook if required
+				if(workbookBuildingListener != null && stubWorkbook == null) {
+					stubWorkbook = workbookBuildingListener.getStubHSSFWorkbook();
+				}
+			}
+			break;
+		
 		case SSTRecord.sid:
 			sstRecord = (SSTRecord) record;
 			break;
@@ -161,7 +184,7 @@
         		}
         	} else {
         		thisStr = '"' + 
-        			FormulaParser.toFormulaString(null, frec.getParsedExpression()) + '"';
+        			FormulaParser.toFormulaString(stubWorkbook, frec.getParsedExpression()) + '"';
         	}
             break;
         case StringRecord.sid:



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org