--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java +++ a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java @@ -49,6 +49,7 @@ import org.apache.poi.openxml4j.exceptions.PartAlreadyExistsException; import org.apache.poi.openxml4j.opc.PackagePart; import org.apache.poi.openxml4j.opc.PackageRelationship; import org.apache.poi.openxml4j.opc.PackageRelationshipCollection; +import org.apache.poi.openxml4j.opc.PackagingURIHelper; import org.apache.poi.openxml4j.opc.TargetMode; import org.apache.poi.poifs.crypt.HashAlgorithm; import org.apache.poi.ss.SpreadsheetVersion; @@ -536,6 +537,13 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet { //drawingNumber = #drawings.size() + 1 int drawingNumber = getPackagePart().getPackage().getPartsByContentType(XSSFRelation.DRAWINGS.getContentType()).size() + 1; + try { + // bug 52836: if there are some stray parts left over from badly formatted files, we should skip those + getPackagePart().getPackage().removePart(PackagingURIHelper.createPartName(XSSFRelation.DRAWINGS.getFileName(drawingNumber))); + } catch (InvalidFormatException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } RelationPart rp = createRelationship(XSSFRelation.DRAWINGS, XSSFFactory.getInstance(), drawingNumber, false); XSSFDrawing drawing = rp.getDocumentPart(); String relId = rp.getRelationship().getId();