def _write_chartsheets(self, archive): from openpyxl.packaging.relationship import Relationship, RelationshipList from openpyxl.worksheet.drawing import Drawing for idx, sheet in enumerate(self.workbook.chartsheets, 1): if sheet._charts: drawing = SpreadsheetDrawing() drawing.charts = sheet._charts self.workbook._drawings.append(drawing) drawing_id = len(self.workbook._drawings) drawingpath = "{0}/drawing{1}.xml".format(PACKAGE_DRAWINGS, drawing_id) archive.writestr(drawingpath, tostring(drawing._write())) archive.writestr( "{0}/_rels/drawing{1}.xml.rels".format( PACKAGE_DRAWINGS, drawing_id), tostring(drawing._write_rels()) ) rel = Relationship(type="drawing", target="/" + drawingpath) rels = RelationshipList() rels.append(rel) tree = rels.to_tree() sheet.drawing.id = "rId{0}".format(len(rels)) archive.writestr(PACKAGE_CHARTSHEETS + '/_rels/sheet%d.xml.rels' % idx, tostring(tree) ) xml = tostring(sheet.to_tree()) archive.writestr(PACKAGE_CHARTSHEETS + '/sheet%d.xml' % idx, xml)
def _write_chartsheets(self, archive): from openpyxl.packaging.relationship import Relationship, RelationshipList from openpyxl.worksheet.drawing import Drawing for idx, sheet in enumerate(self.workbook.chartsheets, 1): if sheet._charts: drawing = SpreadsheetDrawing() drawing.charts = sheet._charts self.workbook._drawings.append(drawing) drawing_id = len(self.workbook._drawings) drawingpath = "{0}/drawing{1}.xml".format( PACKAGE_DRAWINGS, drawing_id) archive.writestr(drawingpath, tostring(drawing._write())) archive.writestr( "{0}/_rels/drawing{1}.xml.rels".format( PACKAGE_DRAWINGS, drawing_id), tostring(drawing._write_rels())) rel = Relationship(type="drawing", target="/" + drawingpath) rels = RelationshipList() rels.append(rel) tree = rels.to_tree() sheet.drawing.id = "rId{0}".format(len(rels)) archive.writestr( PACKAGE_CHARTSHEETS + '/_rels/sheet%d.xml.rels' % idx, tostring(tree)) xml = tostring(sheet.to_tree()) archive.writestr(PACKAGE_CHARTSHEETS + '/sheet%d.xml' % idx, xml)
def _write_worksheets(self, archive): comments_id = 0 for idx, sheet in enumerate(self.workbook.worksheets, 1): xml = sheet._write(self.workbook.shared_strings) sheet._path = "sheet{0}.xml".format(idx) arc_path = "{0}/{1}".format(PACKAGE_WORKSHEETS, sheet._path) rels_path = get_rels_path(arc_path) archive.writestr(arc_path, xml) if sheet._charts or sheet._images: drawing = SpreadsheetDrawing() drawing.charts = sheet._charts drawing.images = sheet._images self.workbook._drawings.append(drawing) drawing_id = len(self.workbook._drawings) drawingpath = "{0}/drawing{1}.xml".format( PACKAGE_DRAWINGS, drawing_id) archive.writestr(drawingpath, tostring(drawing._write())) archive.writestr( "{0}/_rels/drawing{1}.xml.rels".format( PACKAGE_DRAWINGS, drawing_id), tostring(drawing._write_rels())) for r in sheet._rels: if "drawing" in r.Type: r.Target = "/" + drawingpath if sheet._comments: comments_id += 1 cw = self.comment_writer(sheet) archive.writestr(PACKAGE_XL + '/comments%d.xml' % comments_id, cw.write_comments()) if sheet.legacy_drawing is not None: vmlroot = fromstring( self.workbook.vba_archive.read(sheet.legacy_drawing)) archive.writestr(sheet.legacy_drawing, cw.write_comments_vml(vmlroot)) # Record this file so we don't write it again when we dump out vba_archive self.vba_modified.add(sheet.legacy_drawing) else: vmlroot = Element("xml") archive.writestr( PACKAGE_XL + '/drawings/commentsDrawing%d.vml' % comments_id, cw.write_comments_vml(vmlroot)) if (sheet._rels or sheet._comments or sheet.legacy_drawing is not None): rels = write_rels(sheet, comments_id=comments_id) archive.writestr(rels_path, tostring(rels))
def _write_worksheets(self, archive): comments_id = 0 vba_controls_id = 0 for i, sheet in enumerate(self.workbook.worksheets, 1): xml = sheet._write(self.workbook.shared_strings) archive.writestr(PACKAGE_WORKSHEETS + '/sheet%d.xml' % i, xml) if sheet._charts or sheet._images: drawing = SpreadsheetDrawing() drawing.charts = sheet._charts drawing.images = sheet._images self.workbook._drawings.append(drawing) drawing_id = len(self.workbook._drawings) drawingpath = "{0}/drawing{1}.xml".format( PACKAGE_DRAWINGS, drawing_id) archive.writestr(drawingpath, tostring(drawing._write())) archive.writestr( "{0}/_rels/drawing{1}.xml.rels".format( PACKAGE_DRAWINGS, drawing_id), tostring(drawing._write_rels())) for r in sheet._rels: if "drawing" in r.type: r.target = "/" + drawingpath if sheet._comment_count > 0: comments_id += 1 cw = self.comment_writer(sheet) archive.writestr(PACKAGE_XL + '/comments%d.xml' % comments_id, cw.write_comments()) archive.writestr( PACKAGE_XL + '/drawings/commentsDrawing%d.vml' % comments_id, cw.write_comments_vml()) if sheet.vba_controls is not None: vba_controls_id += 1 if (sheet._rels or sheet._comment_count > 0 or sheet.vba_controls is not None): rels = write_rels(sheet, comments_id=comments_id, vba_controls_id=vba_controls_id) archive.writestr( PACKAGE_WORKSHEETS + '/_rels/sheet%d.xml.rels' % i, tostring(rels))
def _write_worksheets(self, archive): comments_id = 0 vba_controls_id = 0 for i, sheet in enumerate(self.workbook.worksheets, 1): xml = sheet._write(self.workbook.shared_strings) archive.writestr(PACKAGE_WORKSHEETS + '/sheet%d.xml' % i , xml) if sheet._charts or sheet._images: drawing = SpreadsheetDrawing() drawing.charts = sheet._charts drawing.images = sheet._images self.workbook._drawings.append(drawing) drawing_id = len(self.workbook._drawings) drawingpath = "{0}/drawing{1}.xml".format(PACKAGE_DRAWINGS, drawing_id) archive.writestr(drawingpath, tostring(drawing._write())) archive.writestr("{0}/_rels/drawing{1}.xml.rels".format(PACKAGE_DRAWINGS, drawing_id), tostring(drawing._write_rels())) for r in sheet._rels: if "drawing" in r.type: r.target = "/" + drawingpath if sheet._comment_count > 0: comments_id += 1 cw = self.comment_writer(sheet) archive.writestr(PACKAGE_XL + '/comments%d.xml' % comments_id, cw.write_comments()) archive.writestr(PACKAGE_XL + '/drawings/commentsDrawing%d.vml' % comments_id, cw.write_comments_vml()) if sheet.vba_controls is not None: vba_controls_id += 1 if (sheet._rels or sheet._comment_count > 0 or sheet.vba_controls is not None): rels = write_rels(sheet, comments_id=comments_id, vba_controls_id=vba_controls_id) archive.writestr( PACKAGE_WORKSHEETS + '/_rels/sheet%d.xml.rels' % i, tostring(rels))
def _write_worksheets(self, archive): comments_id = 0 for i, sheet in enumerate(self.workbook.worksheets, 1): xml = sheet._write(self.workbook.shared_strings) archive.writestr(PACKAGE_WORKSHEETS + '/sheet%d.xml' % i , xml) if sheet._charts or sheet._images: drawing = SpreadsheetDrawing() drawing.charts = sheet._charts drawing.images = sheet._images self.workbook._drawings.append(drawing) drawing_id = len(self.workbook._drawings) drawingpath = "{0}/drawing{1}.xml".format(PACKAGE_DRAWINGS, drawing_id) archive.writestr(drawingpath, tostring(drawing._write())) archive.writestr("{0}/_rels/drawing{1}.xml.rels".format(PACKAGE_DRAWINGS, drawing_id), tostring(drawing._write_rels())) for r in sheet._rels: if "drawing" in r.type: r.target = "/" + drawingpath if sheet._comment_count > 0: comments_id += 1 cw = self.comment_writer(sheet) archive.writestr(PACKAGE_XL + '/comments%d.xml' % comments_id, cw.write_comments()) if sheet.legacy_drawing is not None: vmlroot = fromstring(self.workbook.vba_archive.read(sheet.legacy_drawing)) archive.writestr(sheet.legacy_drawing, cw.write_comments_vml(vmlroot)) # Record this file so we don't write it again when we dump out vba_archive self.vba_modified.add(sheet.legacy_drawing) else: vmlroot = Element("xml") archive.writestr(PACKAGE_XL + '/drawings/commentsDrawing%d.vml' % comments_id, cw.write_comments_vml(vmlroot)) if (sheet._rels or sheet._comment_count > 0 or sheet.legacy_drawing is not None): rels = write_rels(sheet, comments_id=comments_id) archive.writestr(PACKAGE_WORKSHEETS + '/_rels/sheet%d.xml.rels' % i, tostring(rels))