mirror of https://github.com/apache/poi.git
[bug-66675] fix issue with writing xlsx (core properties being added twice)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1910949 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
a9a0acc232
commit
e1bb2a73c8
|
@ -940,7 +940,7 @@ public abstract class OPCPackage implements RelationshipSource, Closeable {
|
|||
throw new IllegalArgumentException("part");
|
||||
}
|
||||
|
||||
if (partList.containsKey(part._partName)) {
|
||||
if (hasPackagePart(part)) {
|
||||
if (!partList.get(part._partName).isDeleted()) {
|
||||
throw new InvalidOperationException(
|
||||
"A part with the name '"
|
||||
|
@ -958,6 +958,10 @@ public abstract class OPCPackage implements RelationshipSource, Closeable {
|
|||
return part;
|
||||
}
|
||||
|
||||
protected boolean hasPackagePart(PackagePart part) {
|
||||
return partList.containsKey(part._partName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified part in this package. If this part is relationship
|
||||
* part, then delete all relationships in the source part.
|
||||
|
|
|
@ -542,7 +542,9 @@ public final class ZipPackage extends OPCPackage {
|
|||
// Ensure that core properties are added if missing
|
||||
getPackageProperties();
|
||||
// Add core properties to part list ...
|
||||
addPackagePart(this.packageProperties);
|
||||
if (!hasPackagePart(this.packageProperties)) {
|
||||
addPackagePart(this.packageProperties);
|
||||
}
|
||||
// ... and to add its relationship ...
|
||||
this.relationships.addRelationship(this.packageProperties
|
||||
.getPartName().getURI(), TargetMode.INTERNAL,
|
||||
|
|
|
@ -3864,6 +3864,23 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues {
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testBug66675() throws Exception {
|
||||
try (XSSFWorkbook wb = openSampleWorkbook("bug66675.xlsx")) {
|
||||
POIXMLProperties.CoreProperties coreProperties = wb.getProperties().getCoreProperties();
|
||||
assertNotNull(coreProperties);
|
||||
wb.removeSheetAt(0);
|
||||
try (UnsynchronizedByteArrayOutputStream bos = UnsynchronizedByteArrayOutputStream.builder().get()) {
|
||||
wb.write(bos);
|
||||
try (XSSFWorkbook wb2 = new XSSFWorkbook(bos.toInputStream())) {
|
||||
XSSFSheet sheet = wb2.getSheetAt(0);
|
||||
assertNotNull(sheet);
|
||||
assertNotNull(wb2.getProperties().getCoreProperties());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void readByCommonsCompress(File temp_excel_poi) throws IOException {
|
||||
/* read by commons-compress*/
|
||||
try (ZipFile zipFile = new ZipFile(temp_excel_poi)) {
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue