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
This commit is contained in:
parent
74621c5983
commit
1e0458db99
@ -36,8 +36,8 @@
|
|||||||
</devs>
|
</devs>
|
||||||
|
|
||||||
<!-- Don't forget to update status.xml too! -->
|
<!-- Don't forget to update status.xml too! -->
|
||||||
<release version="3.2-alpha1" date="2008-??-??">
|
<release version="3.1.1-alpha1" date="2008-??-??">
|
||||||
<action dev="POI-DEVELOPERS" type="add"><!-- to keep forrest dtd quiet--></action>
|
<action dev="POI-DEVELOPERS" type="add">Support for parsing formulas during EventUserModel processing, via the new EventWorkbookBuilder</action>
|
||||||
</release>
|
</release>
|
||||||
<release version="3.1-final" date="2008-06-29">
|
<release version="3.1-final" date="2008-06-29">
|
||||||
<action dev="POI-DEVELOPERS" type="fix">30978 - Fixed re-serialization of tRefErr3d and tAreaErr3d</action>
|
<action dev="POI-DEVELOPERS" type="fix">30978 - Fixed re-serialization of tRefErr3d and tAreaErr3d</action>
|
||||||
|
@ -33,8 +33,8 @@
|
|||||||
|
|
||||||
<!-- Don't forget to update changes.xml too! -->
|
<!-- Don't forget to update changes.xml too! -->
|
||||||
<changes>
|
<changes>
|
||||||
<release version="3.2-alpha1" date="2008-??-??">
|
<release version="3.1.1-alpha1" date="2008-??-??">
|
||||||
<action dev="POI-DEVELOPERS" type="add"><!-- to keep forrest dtd quiet--></action>
|
<action dev="POI-DEVELOPERS" type="add">Support for parsing formulas during EventUserModel processing, via the new EventWorkbookBuilder</action>
|
||||||
</release>
|
</release>
|
||||||
<release version="3.1-final" date="2008-06-29">
|
<release version="3.1-final" date="2008-06-29">
|
||||||
<action dev="POI-DEVELOPERS" type="fix">30978 - Fixed re-serialization of tRefErr3d and tAreaErr3d</action>
|
<action dev="POI-DEVELOPERS" type="fix">30978 - Fixed re-serialization of tRefErr3d and tAreaErr3d</action>
|
||||||
|
@ -30,9 +30,11 @@ import org.apache.poi.hssf.eventusermodel.HSSFEventFactory;
|
|||||||
import org.apache.poi.hssf.eventusermodel.HSSFListener;
|
import org.apache.poi.hssf.eventusermodel.HSSFListener;
|
||||||
import org.apache.poi.hssf.eventusermodel.HSSFRequest;
|
import org.apache.poi.hssf.eventusermodel.HSSFRequest;
|
||||||
import org.apache.poi.hssf.eventusermodel.MissingRecordAwareHSSFListener;
|
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.LastCellOfRowDummyRecord;
|
||||||
import org.apache.poi.hssf.eventusermodel.dummyrecord.MissingCellDummyRecord;
|
import org.apache.poi.hssf.eventusermodel.dummyrecord.MissingCellDummyRecord;
|
||||||
import org.apache.poi.hssf.model.FormulaParser;
|
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.BlankRecord;
|
||||||
import org.apache.poi.hssf.record.BoolErrRecord;
|
import org.apache.poi.hssf.record.BoolErrRecord;
|
||||||
import org.apache.poi.hssf.record.CellValueRecordInterface;
|
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.SSTRecord;
|
||||||
import org.apache.poi.hssf.record.StringRecord;
|
import org.apache.poi.hssf.record.StringRecord;
|
||||||
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
|
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
|
||||||
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||||
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
|
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? */
|
/** Should we output the formula, or the value it has? */
|
||||||
private boolean outputFormulaValues = true;
|
private boolean outputFormulaValues = true;
|
||||||
|
|
||||||
|
/** For parsing Formulas */
|
||||||
|
private SheetRecordCollectingListener workbookBuildingListener;
|
||||||
|
private HSSFWorkbook stubWorkbook;
|
||||||
|
|
||||||
// Records we pick up as we process
|
// Records we pick up as we process
|
||||||
private SSTRecord sstRecord;
|
private SSTRecord sstRecord;
|
||||||
private FormatTrackingHSSFListener formatListener;
|
private FormatTrackingHSSFListener formatListener;
|
||||||
@ -108,7 +115,13 @@ public class XLS2CSVmra implements HSSFListener {
|
|||||||
|
|
||||||
HSSFEventFactory factory = new HSSFEventFactory();
|
HSSFEventFactory factory = new HSSFEventFactory();
|
||||||
HSSFRequest request = new HSSFRequest();
|
HSSFRequest request = new HSSFRequest();
|
||||||
|
|
||||||
|
if(outputFormulaValues) {
|
||||||
request.addListenerForAllRecords(formatListener);
|
request.addListenerForAllRecords(formatListener);
|
||||||
|
} else {
|
||||||
|
workbookBuildingListener = new SheetRecordCollectingListener(formatListener);
|
||||||
|
request.addListenerForAllRecords(workbookBuildingListener);
|
||||||
|
}
|
||||||
|
|
||||||
factory.processWorkbookEvents(request, fs);
|
factory.processWorkbookEvents(request, fs);
|
||||||
}
|
}
|
||||||
@ -124,6 +137,16 @@ public class XLS2CSVmra implements HSSFListener {
|
|||||||
|
|
||||||
switch (record.getSid())
|
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:
|
case SSTRecord.sid:
|
||||||
sstRecord = (SSTRecord) record;
|
sstRecord = (SSTRecord) record;
|
||||||
break;
|
break;
|
||||||
@ -161,7 +184,7 @@ public class XLS2CSVmra implements HSSFListener {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
thisStr = '"' +
|
thisStr = '"' +
|
||||||
FormulaParser.toFormulaString(null, frec.getParsedExpression()) + '"';
|
FormulaParser.toFormulaString(stubWorkbook, frec.getParsedExpression()) + '"';
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case StringRecord.sid:
|
case StringRecord.sid:
|
||||||
|
Loading…
Reference in New Issue
Block a user