def _write_worksheets(self, archive, style_writer): drawing_id = 1 chart_id = 1 image_id = 1 shape_id = 1 comments_id = 1 for i, sheet in enumerate(self.workbook.worksheets): archive.writestr( PACKAGE_WORKSHEETS + '/sheet%d.xml' % (i + 1), write_worksheet(sheet, self.shared_strings, style_writer.styles)) if (sheet._charts or sheet._images or sheet.relationships or sheet._comment_count > 0): archive.writestr( PACKAGE_WORKSHEETS + '/_rels/sheet%d.xml.rels' % (i + 1), write_worksheet_rels(sheet, drawing_id, comments_id)) if sheet._charts or sheet._images: dw = DrawingWriter(sheet) archive.writestr( PACKAGE_DRAWINGS + '/drawing%d.xml' % drawing_id, dw.write()) archive.writestr(PACKAGE_DRAWINGS + '/_rels/drawing%d.xml.rels' % drawing_id, dw.write_rels( chart_id, image_id)) # TODO remove this dependency drawing_id += 1 for chart in sheet._charts: cw = ChartWriter(chart) archive.writestr( PACKAGE_CHARTS + '/chart%d.xml' % chart_id, cw.write()) if chart._shapes: archive.writestr( PACKAGE_CHARTS + '/_rels/chart%d.xml.rels' % chart_id, cw.write_rels( drawing_id)) # TODO remove this dependency sw = ShapeWriter(chart._shapes) archive.writestr( PACKAGE_DRAWINGS + '/drawing%d.xml' % drawing_id, sw.write(shape_id)) # TODO remove this dependency shape_id += len(chart._shapes) drawing_id += 1 chart_id += 1 image_id = self._write_images(sheet._images, archive, image_id) if sheet._comment_count > 0: cw = CommentWriter(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()) comments_id += 1
def _write_worksheets(self, archive, shared_string_table, style_writer): drawing_id = 1 chart_id = 1 image_id = 1 shape_id = 1 for i, sheet in enumerate(self.workbook.worksheets): archive.writestr( PACKAGE_WORKSHEETS + '/sheet%d.xml' % (i + 1), write_worksheet(sheet, shared_string_table, style_writer.get_style_by_hash())) if sheet._charts or sheet._images or sheet.relationships: archive.writestr( PACKAGE_WORKSHEETS + '/_rels/sheet%d.xml.rels' % (i + 1), write_worksheet_rels(sheet, drawing_id)) if sheet._charts or sheet._images: dw = DrawingWriter(sheet) archive.writestr( PACKAGE_DRAWINGS + '/drawing%d.xml' % drawing_id, dw.write()) archive.writestr( PACKAGE_DRAWINGS + '/_rels/drawing%d.xml.rels' % drawing_id, dw.write_rels(chart_id, image_id)) drawing_id += 1 for chart in sheet._charts: cw = ChartWriter(chart) archive.writestr( PACKAGE_CHARTS + '/chart%d.xml' % chart_id, cw.write()) if chart._shapes: archive.writestr( PACKAGE_CHARTS + '/_rels/chart%d.xml.rels' % chart_id, cw.write_rels(drawing_id)) sw = ShapeWriter(chart._shapes) archive.writestr( PACKAGE_DRAWINGS + '/drawing%d.xml' % drawing_id, sw.write(shape_id)) shape_id += len(chart._shapes) drawing_id += 1 chart_id += 1 for img in sheet._images: buf = StringIO() img.image.save(buf, format='PNG') archive.writestr( PACKAGE_IMAGES + '/image%d.png' % image_id, buf.getvalue()) image_id += 1
def setup(self): from openpyxl.writer.drawings import ShapeWriter from openpyxl.drawing import Shape chart = DummyChart() self.shape = Shape(chart=chart, text="My first chart") self.sw = ShapeWriter(shapes=[self.shape])