diff options
Diffstat (limited to 'src/java/org/apache/poi/hssf/usermodel')
3 files changed, 26 insertions, 44 deletions
diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java b/src/java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java index 97e605928d..4fb31606ea 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFFormulaEvaluator.java @@ -43,19 +43,11 @@ public class HSSFFormulaEvaluator extends FormulaEvaluator { return new FormulaParser(formula, workbook); } - /** * debug method - * - * @param formula - * @param sheet - * @param workbook */ void inspectPtgs(String formula) { - HSSFWorkbook hssfWb = (HSSFWorkbook)_workbook; - FormulaParser fp = new FormulaParser(formula, hssfWb); - fp.parse(); - Ptg[] ptgs = fp.getRPNPtg(); + Ptg[] ptgs = FormulaParser.parse(formula, _workbook); System.out.println("<ptg-group>"); for (int i = 0, iSize = ptgs.length; i < iSize; i++) { System.out.println("<ptg>"); diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java index 280284439b..6670b20414 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java @@ -35,17 +35,11 @@ import org.apache.poi.hssf.model.FormulaParser; import org.apache.poi.hssf.model.Sheet; import org.apache.poi.hssf.model.Workbook; import org.apache.poi.hssf.record.CellValueRecordInterface; -import org.apache.poi.hssf.record.CFRuleRecord; -import org.apache.poi.hssf.record.DVALRecord; import org.apache.poi.hssf.record.DVRecord; -import org.apache.poi.hssf.record.EOFRecord; import org.apache.poi.hssf.record.EscherAggregate; -import org.apache.poi.hssf.record.HCenterRecord; -import org.apache.poi.hssf.record.PageBreakRecord; 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.VCenterRecord; import org.apache.poi.hssf.record.WSBoolRecord; import org.apache.poi.hssf.record.WindowTwoRecord; import org.apache.poi.hssf.record.aggregates.DataValidityTable; @@ -385,6 +379,22 @@ public class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet DVRecord dvRecord = dataValidation.createDVRecord(workbook); 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; + } /** @@ -1273,11 +1283,9 @@ public class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet // Since it's a formula cell, process the // formula string, and look to see if // it contains any references - FormulaParser fp = new FormulaParser(c.getCellFormula(), workbook); - fp.parse(); // Look for references, and update if needed - Ptg[] ptgs = fp.getRPNPtg(); + Ptg[] ptgs = FormulaParser.parse(c.getCellFormula(), workbook); boolean changed = false; for(int i=0; i<ptgs.length; i++) { if(ptgs[i] instanceof RefPtg) { @@ -1294,7 +1302,7 @@ public class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet // re-create the formula string if(changed) { c.setCellFormula( - fp.toFormulaString(ptgs) + FormulaParser.toFormulaString(workbook, ptgs) ); } } diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java index eb1546ade9..801b298783 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java @@ -931,35 +931,17 @@ public class HSSFWorkbook extends POIDocument implements org.apache.poi.ss.userm Stack ptgs = new Stack(); if (settingRowAndColumn) { - final int exprsSize = 2 * 11 + 1; // Area3DPtg.SIZE + UnionPtg.SIZE + final int exprsSize = 2 * 11 + 1; // 2 * Area3DPtg.SIZE + UnionPtg.SIZE ptgs.add(new MemFuncPtg(exprsSize)); } - if (startColumn >= 0) - { - Area3DPtg colArea = new Area3DPtg(); - colArea.setExternSheetIndex(externSheetIndex); - colArea.setFirstColumn((short)startColumn); - colArea.setLastColumn((short)endColumn); - colArea.setFirstRow(0); - colArea.setLastRow(MAX_ROW); - colArea.setFirstColRelative(false); - colArea.setLastColRelative(false); - colArea.setFirstRowRelative(false); - colArea.setLastRowRelative(false); + if (startColumn >= 0) { + Area3DPtg colArea = new Area3DPtg(0, MAX_ROW, startColumn, endColumn, + false, false, false, false, externSheetIndex); ptgs.add(colArea); } - if (startRow >= 0) - { - Area3DPtg rowArea = new Area3DPtg(); - rowArea.setExternSheetIndex(externSheetIndex); - rowArea.setFirstColumn((short)0); - rowArea.setLastColumn(MAX_COLUMN); - rowArea.setFirstRow(startRow); - rowArea.setLastRow(endRow); - rowArea.setFirstColRelative(false); - rowArea.setLastColRelative(false); - rowArea.setFirstRowRelative(false); - rowArea.setLastRowRelative(false); + if (startRow >= 0) { + Area3DPtg rowArea = new Area3DPtg(startRow, endRow, 0, MAX_COLUMN, + false, false, false, false, externSheetIndex); ptgs.add(rowArea); } if (settingRowAndColumn) |