Browse Source

fixed bug 51470 - avoid exception when cloning XSSF sheets with background images

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1148724 13f79535-47bb-0310-9956-ffa450edef68
tags/REL_3_8_BETA4
Yegor Kozlov 12 years ago
parent
commit
31624647c2

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

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

<changes>
<release version="3.8-beta4" date="2011-??-??">
<action dev="poi-developers" type="fix">51470 - avoid exception when cloning XSSF sheets with background images</action>
<action dev="poi-developers" type="fix">51481 - Fixed autofilters in HSSF to avoid warnings in Excel 2007</action>
<action dev="poi-developers" type="fix">51533 - Avoid exception when changing name of a sheet containing shared formulas</action>
<action dev="poi-developers" type="add">Support for appending images to existing drawings in HSSF</action>

+ 1
- 1
src/ooxml/java/org/apache/poi/POIXMLDocumentPart.java View File

@@ -233,7 +233,7 @@ public class POIXMLDocumentPart {
*
* @param part the child to add
*/
protected final void addRelation(String id,POIXMLDocumentPart part){
public final void addRelation(String id,POIXMLDocumentPart part){
relations.put(id,part);
part.incrementRelationCounter();
}

+ 9
- 0
src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java View File

@@ -385,6 +385,15 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook, Iterable<X
}

clonedSheet.setSelected(false);

// copy sheet's relations
List<POIXMLDocumentPart> rels = srcSheet.getRelations();
for(POIXMLDocumentPart r : rels) {
PackageRelationship rel = r.getPackageRelationship();
clonedSheet.getPackagePart().addRelationship(rel.getTargetURI(), rel.getTargetMode(),rel.getRelationshipType());
clonedSheet.addRelation(rel.getId(), r);
}

return clonedSheet;
}


+ 12
- 0
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java View File

@@ -1157,4 +1157,16 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues {
// assertEquals("FFEEECE1", cA4_EEECE1.getCellStyle().getFillForegroundXSSFColor().getARGBHex());
// assertEquals("FF1F497D", cA5_1F497D.getCellStyle().getFillForegroundXSSFColor().getARGBHex());
}

public void test51470() throws Exception {
XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("51470.xlsx");
XSSFSheet sh0 = wb.getSheetAt(0);
XSSFSheet sh1 = wb.cloneSheet(0);
List<POIXMLDocumentPart> rels0 = sh0.getRelations();
List<POIXMLDocumentPart> rels1 = sh1.getRelations();
assertEquals(1, rels0.size());
assertEquals(1, rels1.size());

assertEquals(rels0.get(0).getPackageRelationship(), rels1.get(0).getPackageRelationship());
}
}

BIN
test-data/spreadsheet/51470.xlsx View File


Loading…
Cancel
Save