DV related fixes from Pierre Lavignotte
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@691017 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
d0c3bad76b
commit
d3f7cc38ef
@ -34,7 +34,14 @@ import org.apache.poi.ddf.EscherRecord;
|
|||||||
import org.apache.poi.hssf.model.FormulaParser;
|
import org.apache.poi.hssf.model.FormulaParser;
|
||||||
import org.apache.poi.hssf.model.Sheet;
|
import org.apache.poi.hssf.model.Sheet;
|
||||||
import org.apache.poi.hssf.model.Workbook;
|
import org.apache.poi.hssf.model.Workbook;
|
||||||
import org.apache.poi.hssf.record.*;
|
import org.apache.poi.hssf.record.CellValueRecordInterface;
|
||||||
|
import org.apache.poi.hssf.record.DVRecord;
|
||||||
|
import org.apache.poi.hssf.record.EscherAggregate;
|
||||||
|
import org.apache.poi.hssf.record.Record;
|
||||||
|
import org.apache.poi.hssf.record.RowRecord;
|
||||||
|
import org.apache.poi.hssf.record.SCLRecord;
|
||||||
|
import org.apache.poi.hssf.record.WSBoolRecord;
|
||||||
|
import org.apache.poi.hssf.record.WindowTwoRecord;
|
||||||
import org.apache.poi.hssf.record.aggregates.DataValidityTable;
|
import org.apache.poi.hssf.record.aggregates.DataValidityTable;
|
||||||
import org.apache.poi.hssf.record.formula.Ptg;
|
import org.apache.poi.hssf.record.formula.Ptg;
|
||||||
import org.apache.poi.hssf.record.formula.RefPtg;
|
import org.apache.poi.hssf.record.formula.RefPtg;
|
||||||
@ -366,6 +373,22 @@ public final class HSSFSheet {
|
|||||||
DVRecord dvRecord = dataValidation.createDVRecord(workbook);
|
DVRecord dvRecord = dataValidation.createDVRecord(workbook);
|
||||||
dvt.addDataValidation(dvRecord);
|
dvt.addDataValidation(dvRecord);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the DVRecords objects that are associated to this sheet
|
||||||
|
* @return a list of DVRecord instances
|
||||||
|
*/
|
||||||
|
public List getDVRecords() {
|
||||||
|
List dvRecords = new ArrayList();
|
||||||
|
List records = sheet.getRecords();
|
||||||
|
|
||||||
|
for(int index=0; index<records.size(); index++) {
|
||||||
|
if(records.get(index) instanceof DVRecord) {
|
||||||
|
dvRecords.add(records.get(index));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return dvRecords;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1254,11 +1277,9 @@ public final class HSSFSheet {
|
|||||||
// Since it's a formula cell, process the
|
// Since it's a formula cell, process the
|
||||||
// formula string, and look to see if
|
// formula string, and look to see if
|
||||||
// it contains any references
|
// it contains any references
|
||||||
FormulaParser fp = new FormulaParser(c.getCellFormula(), workbook);
|
|
||||||
fp.parse();
|
|
||||||
|
|
||||||
// Look for references, and update if needed
|
// Look for references, and update if needed
|
||||||
Ptg[] ptgs = fp.getRPNPtg();
|
Ptg[] ptgs = FormulaParser.parse(c.getCellFormula(), workbook);
|
||||||
boolean changed = false;
|
boolean changed = false;
|
||||||
for(int i=0; i<ptgs.length; i++) {
|
for(int i=0; i<ptgs.length; i++) {
|
||||||
if(ptgs[i] instanceof RefPtg) {
|
if(ptgs[i] instanceof RefPtg) {
|
||||||
@ -1275,7 +1296,7 @@ public final class HSSFSheet {
|
|||||||
// re-create the formula string
|
// re-create the formula string
|
||||||
if(changed) {
|
if(changed) {
|
||||||
c.setCellFormula(
|
c.setCellFormula(
|
||||||
fp.toFormulaString(ptgs)
|
FormulaParser.toFormulaString(workbook, ptgs)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user