aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Burch <nick@apache.org>2008-06-28 17:12:38 +0000
committerNick Burch <nick@apache.org>2008-06-28 17:12:38 +0000
commit910c010d47d4afafe3a5bb0602b38c8c1cc70a7c (patch)
tree729ed93e8fc3ff7aa36a7bb5c1f6cacb151bfa84
parent60511a769d2272af64c9bd978cf4b278f0313f87 (diff)
downloadpoi-910c010d47d4afafe3a5bb0602b38c8c1cc70a7c.tar.gz
poi-910c010d47d4afafe3a5bb0602b38c8c1cc70a7c.zip
Update changelog about EventWorkbookBuilder, and tweak XLS2CSVmra to use it if formulas required
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@672553 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--src/documentation/content/xdocs/changes.xml4
-rw-r--r--src/documentation/content/xdocs/status.xml4
-rw-r--r--src/examples/src/org/apache/poi/hssf/eventusermodel/examples/XLS2CSVmra.java27
3 files changed, 29 insertions, 6 deletions
diff --git a/src/documentation/content/xdocs/changes.xml b/src/documentation/content/xdocs/changes.xml
index e82fa59db5..3789216d2d 100644
--- a/src/documentation/content/xdocs/changes.xml
+++ b/src/documentation/content/xdocs/changes.xml
@@ -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>
diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml
index 56f909718a..a226686c0d 100644
--- a/src/documentation/content/xdocs/status.xml
+++ b/src/documentation/content/xdocs/status.xml
@@ -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>
diff --git a/src/examples/src/org/apache/poi/hssf/eventusermodel/examples/XLS2CSVmra.java b/src/examples/src/org/apache/poi/hssf/eventusermodel/examples/XLS2CSVmra.java
index 9bebd3a837..1c9b220356 100644
--- a/src/examples/src/org/apache/poi/hssf/eventusermodel/examples/XLS2CSVmra.java
+++ b/src/examples/src/org/apache/poi/hssf/eventusermodel/examples/XLS2CSVmra.java
@@ -30,9 +30,11 @@ import org.apache.poi.hssf.eventusermodel.HSSFEventFactory;
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.Record;
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 @@ public class XLS2CSVmra implements HSSFListener {
/** 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 @@ public class XLS2CSVmra implements HSSFListener {
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 @@ public class XLS2CSVmra implements HSSFListener {
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 @@ public class XLS2CSVmra implements HSSFListener {
}
} else {
thisStr = '"' +
- FormulaParser.toFormulaString(null, frec.getParsedExpression()) + '"';
+ FormulaParser.toFormulaString(stubWorkbook, frec.getParsedExpression()) + '"';
}
break;
case StringRecord.sid: