diff options
author | Ugo Cei <ugo@apache.org> | 2008-01-25 11:39:29 +0000 |
---|---|---|
committer | Ugo Cei <ugo@apache.org> | 2008-01-25 11:39:29 +0000 |
commit | 4303df9d00b64a5a7897d147d247b9954a9b09a5 (patch) | |
tree | 9a44ed37d5ef9d9c92022894bdeef8a2751e41df /src/documentation | |
parent | 7102c5c610f9ed95a0cd0d72b9bebe708c0340f0 (diff) | |
download | poi-4303df9d00b64a5a7897d147d247b9954a9b09a5.tar.gz poi-4303df9d00b64a5a7897d147d247b9954a9b09a5.zip |
Merged revisions 614878-614909 via svnmerge from
https://svn.apache.org/repos/asf/poi/trunk
........
r614878 | nick | 2008-01-24 15:13:05 +0100 (Thu, 24 Jan 2008) | 1 line
Add another formula evaluation method, evaluateFormulaCell(cell), which will re-calculate the value for a formula, without affecting the formula itself. Add tests too, and update the documentation
........
r614909 | nick | 2008-01-24 17:05:27 +0100 (Thu, 24 Jan 2008) | 1 line
From bug #44254 - avoid some unread bytes warnings, and process the contents of DVALRecord
........
git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@615185 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/documentation')
-rw-r--r-- | src/documentation/content/xdocs/changes.xml | 2 | ||||
-rw-r--r-- | src/documentation/content/xdocs/hssf/eval.xml | 58 | ||||
-rw-r--r-- | src/documentation/content/xdocs/status.xml | 2 |
3 files changed, 58 insertions, 4 deletions
diff --git a/src/documentation/content/xdocs/changes.xml b/src/documentation/content/xdocs/changes.xml index a2bd40d73f..51aeb22461 100644 --- a/src/documentation/content/xdocs/changes.xml +++ b/src/documentation/content/xdocs/changes.xml @@ -36,6 +36,8 @@ <!-- Don't forget to update status.xml too! --> <release version="3.0.2-FINAL" date="2008-??-??"> + <action dev="POI-DEVELOPERS" type="fix">44254 - Avoid some unread byte warnings, and properly understand DVALRecord</action> + <action dev="POI-DEVELOPERS" type="add">Add another formula evaluation method, evaluateFormulaCell(cell), which will re-calculate the value for a formula, without affecting the formula itself.</action> <action dev="POI-DEVELOPERS" type="fix">41726 - Fix how we handle signed cell offsets in relative areas and references</action> <action dev="POI-DEVELOPERS" type="add">44233 - Support for getting and setting a flag on the sheet, which tells excel to re-calculate all formulas on it at next reload</action> <action dev="POI-DEVELOPERS" type="fix">44201 - Enable cloning of sheets with data validation rules</action> diff --git a/src/documentation/content/xdocs/hssf/eval.xml b/src/documentation/content/xdocs/hssf/eval.xml index 1416ad7c29..8d63512173 100644 --- a/src/documentation/content/xdocs/hssf/eval.xml +++ b/src/documentation/content/xdocs/hssf/eval.xml @@ -55,10 +55,12 @@ <p>The following code demonstrates how to use the HSSFFormulaEvaluator in the context of other POI excel reading code. </p> - <p>There are two ways in which you can use the HSSFFormulaEvalutator API.</p> + <p>There are several ways in which you can use the HSSFFormulaEvalutator API.</p> <anchor id="Evaluate"/> <section><title>Using HSSFFormulaEvaluator.<strong>evaluate</strong>(HSSFCell cell)</title> + <p>This evaluates a given cell, and returns the new value, + without affecting the cell</p> <source> FileInputStream fis = new FileInputStream("c:/temp/test.xls"); HSSFWorkbook wb = new HSSFWorkbook(fis); @@ -102,12 +104,60 @@ switch (cellValue.getCellType()) { </p> </section> + <anchor id="EvaluateFormulaCell"/> + <section><title>Using HSSFFormulaEvaluator.<strong>evaluateFormulaCell</strong>(HSSFCell cell)</title> + <p><strong>evaluateFormulaCell</strong>(HSSFCell cell) + will check to see if the supplied cell is a formula cell. + If it isn't, then no changes will be made to it. If it is, + then the formula is evaluated. The value for the formula + is saved alongside it, to be displayed in excel. The + formula remains in the cell, just with a new value</p> + <p>The return of the function is the type of the + formula result, such as HSSFCell.CELL_TYPE_BOOLEAN</p> + <source> +FileInputStream fis = new FileInputStream("/somepath/test.xls"); +HSSFWorkbook wb = new HSSFWorkbook(fis); +HSSFSheet sheet = wb.getSheetAt(0); +HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(sheet, wb); + +// suppose your formula is in B3 +CellReference cellReference = new CellReference("B3"); +HSSFRow row = sheet.getRow(cellReference.getRow()); +HSSFCell cell = row.getCell(cellReference.getCol()); +evaluator.setCurrentRow(row); + +if (cell!=null) { + switch (<strong>evaluator.evaluateFormulaCell</strong>(cell)) { + case HSSFCell.CELL_TYPE_BOOLEAN: + System.out.println(cell.getBooleanCellValue()); + break; + case HSSFCell.CELL_TYPE_NUMERIC: + System.out.println(cell.getNumberCellValue()); + break; + case HSSFCell.CELL_TYPE_STRING: + System.out.println(cell.getStringCellValue()); + break; + case HSSFCell.CELL_TYPE_BLANK: + break; + case HSSFCell.CELL_TYPE_ERROR: + System.out.println(cell.getErrorCellValue()); + break; + + // CELL_TYPE_FORMULA will never occur + case HSSFCell.CELL_TYPE_FORMULA: + break; + } +} + </source> + </section> + <anchor id="EvaluateInCell"/> <section><title>Using HSSFFormulaEvaluator.<strong>evaluateInCell</strong>(HSSFCell cell)</title> <p><strong>evaluateInCell</strong>(HSSFCell cell) will check to see if the supplied cell is a formula cell. If it isn't, then no changes will be made to it. If it is, then the - formula is evaluated, and the new value saved into the cell.</p> + formula is evaluated, and the new value saved into the cell, + in place of the old formula.</p> <source> FileInputStream fis = new FileInputStream("/somepath/test.xls"); HSSFWorkbook wb = new HSSFWorkbook(fis); @@ -154,14 +204,14 @@ for(int sheetNum = 0; sheetNum < wb.getNumberOfSheets(); sheetNum++) { HSSFSheet sheet = wb.getSheetAt(sheetNum); HSSFFormulaEvaluator evaluator = new HSSFFormulaEvaluator(sheet, wb); - for(Iterator rit = s.rowIterator(); rit.hasNext();) { + for(Iterator rit = sheet.rowIterator(); rit.hasNext();) { HSSFRow r = (HSSFRow)rit.next(); evaluator.setCurrentRow(r); for(Iterator cit = r.cellIterator(); cit.hasNext();) { HSSFCell c = (HSSFCell)cit.next(); if(c.getCellType() == HSSFCell.CELL_TYPE_FORMULA) { - evaluator.evaluateInCell(c); + evaluator.evaluateFormulaCell(c); } } } diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index 56b868b875..feabdf76b4 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -33,6 +33,8 @@ <!-- Don't forget to update changes.xml too! --> <changes> <release version="3.0.2-FINAL" date="2008-??-??"> + <action dev="POI-DEVELOPERS" type="fix">44254 - Avoid some unread byte warnings, and properly understand DVALRecord</action> + <action dev="POI-DEVELOPERS" type="add">Add another formula evaluation method, evaluateFormulaCell(cell), which will re-calculate the value for a formula, without affecting the formula itself.</action> <action dev="POI-DEVELOPERS" type="fix">41726 - Fix how we handle signed cell offsets in relative areas and references</action> <action dev="POI-DEVELOPERS" type="add">44233 - Support for getting and setting a flag on the sheet, which tells excel to re-calculate all formulas on it at next reload</action> <action dev="POI-DEVELOPERS" type="fix">44201 - Enable cloning of sheets with data validation rules</action> |