Browse Source

Bugzilla 52527: avoid exception when matching shared formula records in HSSF

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1241419 13f79535-47bb-0310-9956-ffa450edef68
tags/REL_3_8_FINAL
Yegor Kozlov 12 years ago
parent
commit
8840f717da

+ 1
- 0
src/documentation/content/xdocs/status.xml View File

@@ -34,6 +34,7 @@

<changes>
<release version="3.8-beta6" date="2012-??-??">
<action dev="poi-developers" type="fix">52527 - avoid exception when matching shared formula records in HSSF</action>
<action dev="poi-developers" type="add">52568 - Added methods to set/get an XWPFRun's text color</action>
<action dev="poi-developers" type="add">52566 - Added methods to set/get vertical alignment and color in XWPFTableCell</action>
<action dev="poi-developers" type="add">52562 - Added methods to get/set a table row's Can't Split and Repeat Header attributes in XWPF</action>

+ 3
- 4
src/java/org/apache/poi/hssf/record/aggregates/SharedValueManager.java View File

@@ -158,6 +158,9 @@ public final class SharedValueManager {
*/
public SharedFormulaRecord linkSharedFormulaRecord(CellReference firstCell, FormulaRecordAggregate agg) {
SharedFormulaGroup result = findFormulaGroupForCell(firstCell);
if(null == result) {
throw new RuntimeException("Failed to find a matching shared formula record");
}
result.add(agg);
return result.getSFR();
}
@@ -170,10 +173,6 @@ public final class SharedValueManager {
}
}
SharedFormulaGroup sfg = _groupsCache.get(getKeyForCache(cellRef));
if(null == sfg) {
// TODO - fix file "15228.xls" so it opens in Excel after rewriting with POI
throw new RuntimeException("Failed to find a matching shared formula record");
}
return sfg;
}


+ 20
- 0
src/testcases/org/apache/poi/hssf/record/aggregates/TestSharedValueManager.java View File

@@ -192,4 +192,24 @@ public final class TestSharedValueManager extends TestCase {
throw new RuntimeException(e);
}
}

public void testBug52527() {
HSSFWorkbook wb1 = HSSFTestDataSamples.openSampleWorkbook("52527.xls");
HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1);

assertEquals("IF(H3,LINEST(N9:N14,K9:M14,FALSE),LINEST(N8:N14,K8:M14,FALSE))",
wb1.getSheetAt(0).getRow(4).getCell(11).getCellFormula());
assertEquals("IF(H3,LINEST(N9:N14,K9:M14,FALSE),LINEST(N8:N14,K8:M14,FALSE))",
wb2.getSheetAt(0).getRow(4).getCell(11).getCellFormula());

assertEquals("1/SQRT(J9)",
wb1.getSheetAt(0).getRow(8).getCell(10).getCellFormula());
assertEquals("1/SQRT(J9)",
wb2.getSheetAt(0).getRow(8).getCell(10).getCellFormula());

assertEquals("1/SQRT(J26)",
wb1.getSheetAt(0).getRow(25).getCell(10).getCellFormula());
assertEquals("1/SQRT(J26)",
wb2.getSheetAt(0).getRow(25).getCell(10).getCellFormula());
}
}

BIN
test-data/spreadsheet/52527.xls View File


Loading…
Cancel
Save