private void copyChart(CTGraphicalObjectData objData, XSLFGraphicFrame srcShape) { XSLFSlide slide = (XSLFSlide) getSheet(); XSLFSheet src = srcShape.getSheet(); String xpath = "declare namespace c='http://schemas.openxmlformats.org/drawingml/2006/chart' c:chart"; XmlObject[] obj = objData.selectPath(xpath); if (obj != null && obj.length == 1) { XmlCursor c = obj[0].newCursor(); try { // duplicate chart with embedded workbook QName idQualifiedName = new QName("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "id"); String id = c.getAttributeText(idQualifiedName); XSLFChart srcChart = (XSLFChart) src.getRelationById(id); XSLFChart chartCopy = slide.getSlideShow().createChart(slide); chartCopy.importContent(srcChart); chartCopy.setWorkbook(srcChart.getWorkbook()); c.setAttributeText(idQualifiedName, slide.getRelationId(chartCopy)); } catch (InvalidFormatException e) { throw new POIXMLException(e); } catch (IOException e) { throw new POIXMLException(e); } c.dispose(); } }
private void copyDiagram(CTGraphicalObjectData objData, XSLFGraphicFrame srcShape){ String xpath = "declare namespace dgm='http://schemas.openxmlformats.org/drawingml/2006/diagram' $this//dgm:relIds"; XmlObject[] obj = objData.selectPath(xpath); if(obj != null && obj.length == 1){ XmlCursor c = obj[0].newCursor(); XSLFSheet sheet = srcShape.getSheet(); try { String dm = c.getAttributeText(new QName("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "dm")); PackageRelationship dmRel = sheet.getPackagePart().getRelationship(dm); PackagePart dmPart = sheet.getPackagePart().getRelatedPart(dmRel); getSheet().importPart(dmRel, dmPart); String lo = c.getAttributeText(new QName("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "lo")); PackageRelationship loRel = sheet.getPackagePart().getRelationship(lo); PackagePart loPart = sheet.getPackagePart().getRelatedPart(loRel); getSheet().importPart(loRel, loPart); String qs = c.getAttributeText(new QName("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "qs")); PackageRelationship qsRel = sheet.getPackagePart().getRelationship(qs); PackagePart qsPart = sheet.getPackagePart().getRelatedPart(qsRel); getSheet().importPart(qsRel, qsPart); String cs = c.getAttributeText(new QName("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "cs")); PackageRelationship csRel = sheet.getPackagePart().getRelationship(cs); PackagePart csPart = sheet.getPackagePart().getRelatedPart(csRel); getSheet().importPart(csRel, csPart); } catch (InvalidFormatException e){ throw new POIXMLException(e); } c.dispose(); } }
/*package*/ XSLFTable(CTGraphicalObjectFrame shape, XSLFSheet sheet){ super(shape, sheet); XmlObject[] rs = shape.getGraphic().getGraphicData() .selectPath("declare namespace a='http://schemas.openxmlformats.org/drawingml/2006/main' ./a:tbl"); if (rs.length == 0) { throw new IllegalStateException("a:tbl element was not found in\n " + shape.getGraphic().getGraphicData()); } // Pesky XmlBeans bug - see Bugzilla #49934 // it never happens when using the full ooxml-schemas jar but may happen with the abridged poi-ooxml-schemas if(rs[0] instanceof XmlAnyTypeImpl){ try { rs[0] = CTTable.Factory.parse(rs[0].toString()); }catch (XmlException e){ throw new POIXMLException(e); } } _table = (CTTable) rs[0]; _rows = new ArrayList<XSLFTableRow>(_table.sizeOfTrArray()); for(CTTableRow row : _table.getTrList()) _rows.add(new XSLFTableRow(row, this)); }
private void copyChart(CTGraphicalObjectData objData, XSLFGraphicFrame srcShape) { XSLFSlide slide = (XSLFSlide) getSheet(); XSLFSheet src = srcShape.getSheet(); String xpath = "declare namespace c='http://schemas.openxmlformats.org/drawingml/2006/chart' c:chart"; XmlObject[] obj = objData.selectPath(xpath); if (obj != null && obj.length == 1) { XmlCursor c = obj[0].newCursor(); try { // duplicate chart with embedded workbook QName idQualifiedName = new QName("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "id"); String id = c.getAttributeText(idQualifiedName); XSLFChart srcChart = (XSLFChart) src.getRelationById(id); XSLFChart chartCopy = slide.getSlideShow().createChart(slide); chartCopy.importContent(srcChart); chartCopy.setWorkbook(srcChart.getWorkbook()); c.setAttributeText(idQualifiedName, slide.getRelationId(chartCopy)); } catch (InvalidFormatException e) { throw new POIXMLException(e); } catch (IOException e) { throw new POIXMLException(e); } c.dispose(); } }
private void copyDiagram(CTGraphicalObjectData objData, XSLFGraphicFrame srcShape){ String xpath = "declare namespace dgm='http://schemas.openxmlformats.org/drawingml/2006/diagram' $this//dgm:relIds"; XmlObject[] obj = objData.selectPath(xpath); if(obj != null && obj.length == 1){ XmlCursor c = obj[0].newCursor(); XSLFSheet sheet = srcShape.getSheet(); try { String dm = c.getAttributeText(new QName("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "dm")); PackageRelationship dmRel = sheet.getPackagePart().getRelationship(dm); PackagePart dmPart = sheet.getPackagePart().getRelatedPart(dmRel); getSheet().importPart(dmRel, dmPart); String lo = c.getAttributeText(new QName("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "lo")); PackageRelationship loRel = sheet.getPackagePart().getRelationship(lo); PackagePart loPart = sheet.getPackagePart().getRelatedPart(loRel); getSheet().importPart(loRel, loPart); String qs = c.getAttributeText(new QName("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "qs")); PackageRelationship qsRel = sheet.getPackagePart().getRelationship(qs); PackagePart qsPart = sheet.getPackagePart().getRelatedPart(qsRel); getSheet().importPart(qsRel, qsPart); String cs = c.getAttributeText(new QName("http://schemas.openxmlformats.org/officeDocument/2006/relationships", "cs")); PackageRelationship csRel = sheet.getPackagePart().getRelationship(cs); PackagePart csPart = sheet.getPackagePart().getRelatedPart(csRel); getSheet().importPart(csRel, csPart); } catch (InvalidFormatException e){ throw new POIXMLException(e); } c.dispose(); } }