From a03a39fd543a2b59e0fa8b326a5ba4d440b95bda Mon Sep 17 00:00:00 2001 From: Yegor Kozlov Date: Mon, 27 Feb 2012 12:18:45 +0000 Subject: [PATCH] Bugzilla 51790: fixed reading shared formulas in XSSF git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1294127 13f79535-47bb-0310-9956-ffa450edef68 --- src/documentation/content/xdocs/status.xml | 1 + .../apache/poi/xssf/usermodel/XSSFSheet.java | 15 +++++++- .../poi/xssf/usermodel/TestXSSFBugs.java | 32 ++++++++++++++++++ test-data/spreadsheet/51790.xlsx | Bin 0 -> 85202 bytes 4 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 test-data/spreadsheet/51790.xlsx diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index bd83e48d6..cbd39ea9d 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,7 @@ + 51710 - fixed reading shared formulas in XSSF 52708 - misc improvements in CellFormat 52690 - added a getter for length of encrypted data in Ecma and Agile decryptors 52255 - support adding TIFF,EPS and WPG pictures in OOXML documents diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java index fa7ce429d..2d0566a3d 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java @@ -2670,7 +2670,20 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { if (f != null && f.getT() == STCellFormulaType.SHARED && f.isSetRef() && f.getStringValue() != null) { // save a detached copy to avoid XmlValueDisconnectedException, // this may happen when the master cell of a shared formula is changed - sharedFormulas.put((int)f.getSi(), (CTCellFormula)f.copy()); + CTCellFormula sf = (CTCellFormula)f.copy(); + CellRangeAddress sfRef = CellRangeAddress.valueOf(sf.getRef()); + CellReference cellRef = new CellReference(cell); + // If the shared formula range preceeds the master cell then the preseeing part is discarded, e.g. + // if the cell is E60 and the shared formula range is C60:M85 then the effective range is E60:M85 + // see more details in https://issues.apache.org/bugzilla/show_bug.cgi?id=51710 + if(cellRef.getCol() > sfRef.getFirstColumn() || cellRef.getRow() > sfRef.getFirstRow()){ + String effectiveRef = new CellRangeAddress( + Math.max(cellRef.getRow(), sfRef.getFirstRow()), sfRef.getLastRow(), + Math.max(cellRef.getCol(), sfRef.getFirstColumn()), sfRef.getLastColumn()).formatAsString(); + sf.setRef(effectiveRef); + } + + sharedFormulas.put((int)f.getSi(), sf); } if (f != null && f.getT() == STCellFormulaType.ARRAY && f.getRef() != null) { arrayFormulas.add(CellRangeAddress.valueOf(f.getRef())); diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index 0a781748f..b7a90c1a9 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -44,6 +44,7 @@ import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.util.AreaReference; +import org.apache.poi.ss.util.CellReference; import org.apache.poi.xssf.XSSFITestDataProvider; import org.apache.poi.xssf.XSSFTestDataSamples; import org.apache.poi.xssf.model.CalculationChain; @@ -1285,4 +1286,35 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { assertEquals(20.0, c1.getNumericCellValue()); assertEquals(20.0, c2.getNumericCellValue()); } + + /** + * Bugzilla 51710: problems reading shared formuals from .xlsx + */ + public void test51710() { + Workbook wb = XSSFTestDataSamples.openSampleWorkbook("51790.xlsx"); + + final String[] columns = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N"}; + final int rowMax = 500; // bug triggers on row index 59 + + Sheet sheet = wb.getSheetAt(0); + + + // go through all formula cells + for (int rInd = 2; rInd <= rowMax; rInd++) { + Row row = sheet.getRow(rInd); + + for (int cInd = 1; cInd <= 12; cInd++) { + Cell cell = row.getCell(cInd); + String formula = cell.getCellFormula(); + CellReference ref = new CellReference(cell); + + //simulate correct answer + String correct = "$A" + (rInd + 1) + "*" + columns[cInd] + "$2"; + + assertEquals("Incorrect formula in " + ref.formatAsString(), correct, formula); + } + + } + } + } diff --git a/test-data/spreadsheet/51790.xlsx b/test-data/spreadsheet/51790.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..772395b4a9e262213beb3cde39fc02bb3f7ea469 GIT binary patch literal 85202 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 X=8Z}KUntZB@IL^o*4G;V=28C#FUS!8 literal 0 HcmV?d00001