class TestBarChartWriter(object): """""" def setup(self): """Setup a worksheet with one column of data and a bar chart""" wb = Workbook() ws = wb.get_active_sheet() ws.title = 'Numbers' for i in range(10): ws.append([i]) self.piechart = BarChart() self.piechart.add_serie(Serie(Reference(ws, (0, 0), (9, 0)))) self.cw = BarChartWriter(self.piechart) self.root = Element('test') def test_write_chart(self): """check if some characteristic tags of LineChart are there""" self.cw._write_chart(self.root) tagnames = ['{%s}barChart' % CHART_NS, '{%s}valAx' % CHART_NS, '{%s}catAx' % CHART_NS] root = safe_iterator(self.root) chart_tags = [e.tag for e in root] for tag in tagnames: assert_true(tag in chart_tags, tag) def test_serialised(self): """Check the serialised file against sample""" xml = self.cw.write() expected_file = os.path.join(DATADIR, "writer", "expected", "BarChart.xml") with open(expected_file) as expected: diff = compare_xml(xml, expected.read()) assert diff is None, diff
def test_write_no_ascii(self): ws = self.make_worksheet() ws.append(["D\xc3\xbcsseldorf"] * 10) serie = Serie(values=Reference(ws, (0, 0), (0, 9)), legend=Reference(ws, (1, 0), (1, 9))) c = BarChart() c.add_serie(serie) cw = ChartWriter(c)
def numbers(wb): ws = wb.create_sheet(1, "Numbers") for i in range(10): ws.append([i]) chart = BarChart() values = Reference(ws, (0, 0), (9, 0)) series = Serie(values) chart.add_serie(series) ws.add_chart(chart)
def negative(wb): ws = wb.create_sheet(1, "Negative") for i in range(-5, 5): ws.append([i]) chart = BarChart() values = Reference(ws, (0, 0), (9, 0)) series = Serie(values) chart.add_serie(series) ws.add_chart(chart)
def dates(wb): ws = wb.create_sheet(3, "Dates") for i in range(1, 10): ws.append([date(2013, i, 1), i]) chart = BarChart() values = Reference(ws, (0, 1), (9, 1)) labels = Reference(ws, (0, 0), (9, 0)) labels.number_format = 'd-mmm' series = Serie(values, labels=labels) chart.add_serie(series) ws.add_chart(chart)
def draw_chart(self, wsheet, series, left=0, title=""): chart = BarChart() chart.title = title chart.drawing.left = 500 + left chart.drawing.top = 250 + left chart.drawing.height = 200 chart.drawing.width = 500 i = 0 for serie in series: if len(serie) == 4: x1 = int(serie[0]) y1 = int(serie[1]) x2 = int(serie[2]) y2 = int(serie[3]) if x2 > 3: if i == 0: legend = Reference(wsheet, (0, 0)) labels = Reference(wsheet, (x1, 0), (x2, 0)) else: if y1 < 13: legend = Reference(wsheet, (0, 4)) if y1 >= 13: legend = Reference(wsheet, (0, 13)) #value = wsheet.cell(row=4,column=0).value title = wsheet.title if title.find("Rate") < 0: isLabel = True else: if len(title) > 12: isLabel = True else: isLabel = False if i == 0 and isLabel: # type(value).__name__ <> 'int': seri = Serie(Reference(wsheet, (x1, y1), (x2, y2)), labels=labels, legend=legend) else: seri = Serie(Reference(wsheet, (x1, y1), (x2, y2)), legend=legend) chart.add_serie(seri) i += 1 wsheet.add_chart(chart)
def letters(wb): ws = wb.create_sheet(2, "Letters") for idx, l in enumerate("ABCDEFGHIJ"): ws.append([l, idx, idx]) chart = BarChart() labels = Reference(ws, (0, 0), (9, 0)) values = Reference(ws, (0, 1), (9, 1)) series = Serie(values, labels=labels) chart.add_serie(series) # add second series values = Reference(ws, (0, 2), (9, 2)) series = Serie(values, labels=labels) chart.add_serie(series) ws.add_chart(chart)
def draw_chart(self, wsheet, series, left=0, title=""): chart = BarChart() chart.title = title chart.drawing.left = 500 + left chart.drawing.top = 250 + left chart.drawing.height = 200 chart.drawing.width = 500 i = 0 for serie in series: if len(serie) == 4: x1 = int(serie[0]) y1 = int(serie[1]) x2 = int(serie[2]) y2 = int(serie[3]) if x2 > 3: if i == 0: legend = Reference(wsheet, (0, 0)) labels = Reference(wsheet, (x1, 0), (x2, 0)) else: if y1 < 13: legend = Reference(wsheet, (0, 4)) if y1 >= 13: legend = Reference(wsheet, (0, 13)) #value = wsheet.cell(row=4,column=0).value title = wsheet.title if title.find("Rate") < 0: isLabel = True else: if len(title) > 12: isLabel = True else: isLabel = False if i == 0 and isLabel: # type(value).__name__ <> 'int': seri = Serie( Reference(wsheet, (x1, y1), (x2, y2)), labels=labels, legend=legend) else: seri = Serie( Reference(wsheet, (x1, y1), (x2, y2)), legend=legend) chart.add_serie(seri) i += 1 wsheet.add_chart(chart)
class TestChartWriter(object): def setUp(self): wb = Workbook() ws = wb.get_active_sheet() ws.title = u'data' for i in range(10): ws.cell(row = i, column = 0).value = i self.chart = BarChart() self.chart.title = 'TITLE' self.chart.add_serie(Serie(Reference(ws, (0, 0), (10, 0)))) self.chart._series[-1].color = Color.GREEN self.cw = ChartWriter(self.chart) self.root = Element('test') def test_write_title(self): self.cw._write_title(self.root) eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:title><c:tx><c:rich><a:bodyPr /><a:lstStyle /><a:p><a:pPr><a:defRPr /></a:pPr><a:r><a:rPr lang="fr-FR" /><a:t>TITLE</a:t></a:r></a:p></c:rich></c:tx><c:layout /></c:title></test>') def test_write_xaxis(self): self.cw._write_axis(self.root, self.chart.x_axis, 'c:catAx') eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:catAx><c:axId val="60871424" /><c:scaling><c:orientation val="minMax" /></c:scaling><c:axPos val="b" /><c:tickLblPos val="nextTo" /><c:crossAx val="60873344" /><c:crosses val="autoZero" /><c:auto val="1" /><c:lblAlgn val="ctr" /><c:lblOffset val="100" /></c:catAx></test>') def test_write_yaxis(self): self.cw._write_axis(self.root, self.chart.y_axis, 'c:valAx') eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:valAx><c:axId val="60873344" /><c:scaling><c:orientation val="minMax" /><c:max val="10.0" /><c:min val="0" /></c:scaling><c:axPos val="l" /><c:majorGridlines /><c:numFmt formatCode="General" sourceLinked="1" /><c:tickLblPos val="nextTo" /><c:crossAx val="60871424" /><c:crosses val="autoZero" /><c:crossBetween val="between" /><c:majorUnit val="2.0" /></c:valAx></test>') def test_write_series(self): self.cw._write_series(self.root) eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:ser><c:idx val="0" /><c:order val="0" /><c:spPr><a:solidFill><a:srgbClr val="00FF00" /></a:solidFill><a:ln><a:solidFill><a:srgbClr val="00FF00" /></a:solidFill></a:ln></c:spPr><c:marker><c:symbol val="none" /></c:marker><c:val><c:numRef><c:f>data!$A$1:$A$11</c:f><c:numCache><c:formatCode>General</c:formatCode><c:ptCount val="11" /><c:pt idx="0"><c:v>0</c:v></c:pt><c:pt idx="1"><c:v>1</c:v></c:pt><c:pt idx="2"><c:v>2</c:v></c:pt><c:pt idx="3"><c:v>3</c:v></c:pt><c:pt idx="4"><c:v>4</c:v></c:pt><c:pt idx="5"><c:v>5</c:v></c:pt><c:pt idx="6"><c:v>6</c:v></c:pt><c:pt idx="7"><c:v>7</c:v></c:pt><c:pt idx="8"><c:v>8</c:v></c:pt><c:pt idx="9"><c:v>9</c:v></c:pt><c:pt idx="10"><c:v>None</c:v></c:pt></c:numCache></c:numRef></c:val></c:ser></test>') def test_write_legend(self): self.cw._write_legend(self.root) eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:legend><c:legendPos val="r" /><c:layout /></c:legend></test>') def test_write_print_settings(self): self.cw._write_print_settings(self.root) eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:printSettings><c:headerFooter /><c:pageMargins b="0.75" footer="0.3" header="0.3" l="0.7" r="0.7" t="0.75" /><c:pageSetup /></c:printSettings></test>') def test_write_chart(self): self.cw._write_chart(self.root) eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:chart><c:title><c:tx><c:rich><a:bodyPr /><a:lstStyle /><a:p><a:pPr><a:defRPr /></a:pPr><a:r><a:rPr lang="fr-FR" /><a:t>TITLE</a:t></a:r></a:p></c:rich></c:tx><c:layout /></c:title><c:plotArea><c:layout><c:manualLayout><c:layoutTarget val="inner" /><c:xMode val="edge" /><c:yMode val="edge" /><c:x val="1.28571428571" /><c:y val="0.2125" /><c:w val="0.6" /><c:h val="0.6" /></c:manualLayout></c:layout><c:barChart><c:barDir val="col" /><c:grouping val="clustered" /><c:ser><c:idx val="0" /><c:order val="0" /><c:spPr><a:solidFill><a:srgbClr val="00FF00" /></a:solidFill><a:ln><a:solidFill><a:srgbClr val="00FF00" /></a:solidFill></a:ln></c:spPr><c:marker><c:symbol val="none" /></c:marker><c:val><c:numRef><c:f>data!$A$1:$A$11</c:f><c:numCache><c:formatCode>General</c:formatCode><c:ptCount val="11" /><c:pt idx="0"><c:v>0</c:v></c:pt><c:pt idx="1"><c:v>1</c:v></c:pt><c:pt idx="2"><c:v>2</c:v></c:pt><c:pt idx="3"><c:v>3</c:v></c:pt><c:pt idx="4"><c:v>4</c:v></c:pt><c:pt idx="5"><c:v>5</c:v></c:pt><c:pt idx="6"><c:v>6</c:v></c:pt><c:pt idx="7"><c:v>7</c:v></c:pt><c:pt idx="8"><c:v>8</c:v></c:pt><c:pt idx="9"><c:v>9</c:v></c:pt><c:pt idx="10"><c:v>None</c:v></c:pt></c:numCache></c:numRef></c:val></c:ser><c:marker val="1" /><c:axId val="60871424" /><c:axId val="60873344" /></c:barChart><c:catAx><c:axId val="60871424" /><c:scaling><c:orientation val="minMax" /></c:scaling><c:axPos val="b" /><c:tickLblPos val="nextTo" /><c:crossAx val="60873344" /><c:crosses val="autoZero" /><c:auto val="1" /><c:lblAlgn val="ctr" /><c:lblOffset val="100" /></c:catAx><c:valAx><c:axId val="60873344" /><c:scaling><c:orientation val="minMax" /><c:max val="10.0" /><c:min val="0" /></c:scaling><c:axPos val="l" /><c:majorGridlines /><c:numFmt formatCode="General" sourceLinked="1" /><c:tickLblPos val="nextTo" /><c:crossAx val="60871424" /><c:crosses val="autoZero" /><c:crossBetween val="between" /><c:majorUnit val="2.0" /></c:valAx></c:plotArea><c:legend><c:legendPos val="r" /><c:layout /></c:legend><c:plotVisOnly val="1" /></c:chart></test>')
def test_label_no_number_format(self): ws = self.make_worksheet() for i in range(10): ws.append([i, i]) labels = Reference(ws, (0,0), (0,9)) values = Reference(ws, (0,0), (0,9)) serie = Serie(values=values, labels=labels) c = BarChart() c.add_serie(serie) cw = BarChartWriter(c) root = Element('test') cw._write_serial(root, c._series[0].labels) expected = """<?xml version='1.0' ?><test xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart"><c:numRef><c:f>'data'!$A$1:$J$1</c:f><c:numCache><c:formatCode>General</c:formatCode><c:ptCount val="10" /><c:pt idx="0"><c:v>0</c:v></c:pt><c:pt idx="1"><c:v>1</c:v></c:pt><c:pt idx="2"><c:v>2</c:v></c:pt><c:pt idx="3"><c:v>3</c:v></c:pt><c:pt idx="4"><c:v>4</c:v></c:pt><c:pt idx="5"><c:v>5</c:v></c:pt><c:pt idx="6"><c:v>6</c:v></c:pt><c:pt idx="7"><c:v>7</c:v></c:pt><c:pt idx="8"><c:v>8</c:v></c:pt><c:pt idx="9"><c:v>9</c:v></c:pt></c:numCache></c:numRef></test>""" xml = get_xml(root) diff = compare_xml(xml, expected) assert diff is None, diff
class TestChartWriter(object): def setup(self): wb = Workbook() ws = wb.get_active_sheet() ws.title = 'data' for i in range(10): ws.cell(row=i, column=0).value = i self.chart = BarChart() self.chart.title = 'TITLE' self.chart.add_serie(Serie(Reference(ws, (0, 0), (10, 0)))) self.chart._series[-1].color = Color.GREEN self.cw = BarChartWriter(self.chart) self.root = Element('test') def make_worksheet(self): wb = Workbook() ws = wb.get_active_sheet() ws.title = 'data' ws.append(list(range(10))) return ws def test_write_title(self): self.cw._write_title(self.root) expected = """<?xml version='1.0' ?><test xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart"><c:title><c:tx><c:rich><a:bodyPr /><a:lstStyle /><a:p><a:pPr><a:defRPr /></a:pPr><a:r><a:rPr lang="en-GB" /><a:t>TITLE</a:t></a:r></a:p></c:rich></c:tx><c:layout /></c:title></test>""" xml = get_xml(self.root) diff = compare_xml(xml, expected) assert diff is None, diff def test_write_xaxis(self): self.cw._write_axis(self.root, self.chart.x_axis, '{%s}catAx' % CHART_NS) expected = """<?xml version='1.0' ?><test xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart"><c:catAx><c:axId val="60871424" /><c:scaling><c:orientation val="minMax" /></c:scaling><c:axPos val="b" /><c:tickLblPos val="nextTo" /><c:crossAx val="60873344" /><c:crosses val="autoZero" /><c:auto val="1" /><c:lblAlgn val="ctr" /><c:lblOffset val="100" /></c:catAx></test>""" xml = get_xml(self.root) diff = compare_xml(xml, expected) assert diff is None, diff def test_write_yaxis(self): self.cw._write_axis(self.root, self.chart.y_axis, '{%s}valAx' % CHART_NS) expected = """<?xml version='1.0' ?><test xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart"><c:valAx><c:axId val="60873344" /><c:scaling><c:orientation val="minMax" /><c:max val="10.0" /><c:min val="0.0" /></c:scaling><c:axPos val="l" /><c:majorGridlines /><c:numFmt formatCode="General" sourceLinked="1" /><c:tickLblPos val="nextTo" /><c:crossAx val="60871424" /><c:crosses val="autoZero" /><c:crossBetween val="between" /><c:majorUnit val="2.0" /></c:valAx></test>""" xml = get_xml(self.root) diff = compare_xml(xml, expected) assert diff is None, diff def test_write_series(self): self.cw._write_series(self.root) expected = """<?xml version='1.0' ?><test xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart"><c:ser><c:idx val="0" /><c:order val="0" /><c:spPr><a:solidFill><a:srgbClr val="00FF00" /></a:solidFill><a:ln><a:solidFill><a:srgbClr val="00FF00" /></a:solidFill></a:ln></c:spPr><c:val><c:numRef><c:f>\'data\'!$A$1:$A$11</c:f><c:numCache><c:formatCode>General</c:formatCode><c:ptCount val="11" /><c:pt idx="0"><c:v>0</c:v></c:pt><c:pt idx="1"><c:v>1</c:v></c:pt><c:pt idx="2"><c:v>2</c:v></c:pt><c:pt idx="3"><c:v>3</c:v></c:pt><c:pt idx="4"><c:v>4</c:v></c:pt><c:pt idx="5"><c:v>5</c:v></c:pt><c:pt idx="6"><c:v>6</c:v></c:pt><c:pt idx="7"><c:v>7</c:v></c:pt><c:pt idx="8"><c:v>8</c:v></c:pt><c:pt idx="9"><c:v>9</c:v></c:pt><c:pt idx="10"><c:v>None</c:v></c:pt></c:numCache></c:numRef></c:val></c:ser></test>""" xml = get_xml(self.root) diff = compare_xml(xml, expected) assert diff is None, diff def test_write_legend(self): self.cw._write_legend(self.root) expected = """<?xml version='1.0' ?><test xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart"><c:legend><c:legendPos val="r" /><c:layout /></c:legend></test>""" xml = get_xml(self.root) diff = compare_xml(xml, expected) assert diff is None, diff def test_no_write_legend(self): self.chart.show_legend = False self.cw._write_legend(self.root) children = [e for e in self.root] eq_(len(children), 0) def test_write_print_settings(self): tagnames = ['test', '{%s}printSettings' % CHART_NS, '{%s}headerFooter' % CHART_NS, '{%s}pageMargins' % CHART_NS, '{%s}pageSetup' % CHART_NS] for e in self.root: assert_true(e.tag in tagnames) if e.tag == "{%s}pageMargins" % CHART_NS: eq_(e.keys(), list(self.chart.print_margins.keys())) for k, v in e.items(): eq_(float(v), self.chart.print_margins[k]) else: eq_(e.text, None) eq_(e.attrib, {}) def test_write_chart(self): root = Element('{%s}chartSpace' % CHART_NS) self.cw._write_chart(root) tree = fromstring(get_xml(root)) assert_true(chart_schema.validate(tree)) expected = """<?xml version='1.0' ?><c:chartSpace xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart"><c:chart><c:title><c:tx><c:rich><a:bodyPr /><a:lstStyle /><a:p><a:pPr><a:defRPr /></a:pPr><a:r><a:rPr lang="en-GB" /><a:t>TITLE</a:t></a:r></a:p></c:rich></c:tx><c:layout /></c:title><c:plotArea><c:layout><c:manualLayout><c:layoutTarget val="inner" /><c:xMode val="edge" /><c:yMode val="edge" /><c:x val="0.03375" /><c:y val="0.31" /><c:w val="0.6" /><c:h val="0.6" /></c:manualLayout></c:layout><c:barChart><c:barDir val="col" /><c:grouping val="clustered" /><c:ser><c:idx val="0" /><c:order val="0" /><c:spPr><a:solidFill><a:srgbClr val="00FF00" /></a:solidFill><a:ln><a:solidFill><a:srgbClr val="00FF00" /></a:solidFill></a:ln></c:spPr><c:val><c:numRef><c:f>'data'!$A$1:$A$11</c:f><c:numCache><c:formatCode>General</c:formatCode><c:ptCount val="11" /><c:pt idx="0"><c:v>0</c:v></c:pt><c:pt idx="1"><c:v>1</c:v></c:pt><c:pt idx="2"><c:v>2</c:v></c:pt><c:pt idx="3"><c:v>3</c:v></c:pt><c:pt idx="4"><c:v>4</c:v></c:pt><c:pt idx="5"><c:v>5</c:v></c:pt><c:pt idx="6"><c:v>6</c:v></c:pt><c:pt idx="7"><c:v>7</c:v></c:pt><c:pt idx="8"><c:v>8</c:v></c:pt><c:pt idx="9"><c:v>9</c:v></c:pt><c:pt idx="10"><c:v>None</c:v></c:pt></c:numCache></c:numRef></c:val></c:ser><c:axId val="60871424" /><c:axId val="60873344" /></c:barChart><c:catAx><c:axId val="60871424" /><c:scaling><c:orientation val="minMax" /></c:scaling><c:axPos val="b" /><c:tickLblPos val="nextTo" /><c:crossAx val="60873344" /><c:crosses val="autoZero" /><c:auto val="1" /><c:lblAlgn val="ctr" /><c:lblOffset val="100" /></c:catAx><c:valAx><c:axId val="60873344" /><c:scaling><c:orientation val="minMax" /><c:max val="10.0" /><c:min val="0.0" /></c:scaling><c:axPos val="l" /><c:majorGridlines /><c:numFmt formatCode="General" sourceLinked="1" /><c:tickLblPos val="nextTo" /><c:crossAx val="60871424" /><c:crosses val="autoZero" /><c:crossBetween val="between" /><c:majorUnit val="2.0" /></c:valAx></c:plotArea><c:legend><c:legendPos val="r" /><c:layout /></c:legend><c:plotVisOnly val="1" /></c:chart></c:chartSpace>""" xml = get_xml(root) diff = compare_xml(xml, expected) assert diff is None, diff def test_write_rels(self): xml = self.cw.write_rels(1) expected = """<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartUserShapes" Target="../drawings/drawing1.xml"/></Relationships>""" diff = compare_xml(xml, expected) assert diff is None, diff def test_write_no_ascii(self): ws = self.make_worksheet() ws.append(["D\xc3\xbcsseldorf"]*10) serie = Serie(values=Reference(ws, (0,0), (0,9)), legend=Reference(ws, (1,0), (1,9)) ) c = BarChart() c.add_serie(serie) cw = ChartWriter(c) def test_label_no_number_format(self): ws = self.make_worksheet() for i in range(10): ws.append([i, i]) labels = Reference(ws, (0,0), (0,9)) values = Reference(ws, (0,0), (0,9)) serie = Serie(values=values, labels=labels) c = BarChart() c.add_serie(serie) cw = BarChartWriter(c) root = Element('test') cw._write_serial(root, c._series[0].labels) expected = """<?xml version='1.0' ?><test xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart"><c:numRef><c:f>'data'!$A$1:$J$1</c:f><c:numCache><c:formatCode>General</c:formatCode><c:ptCount val="10" /><c:pt idx="0"><c:v>0</c:v></c:pt><c:pt idx="1"><c:v>1</c:v></c:pt><c:pt idx="2"><c:v>2</c:v></c:pt><c:pt idx="3"><c:v>3</c:v></c:pt><c:pt idx="4"><c:v>4</c:v></c:pt><c:pt idx="5"><c:v>5</c:v></c:pt><c:pt idx="6"><c:v>6</c:v></c:pt><c:pt idx="7"><c:v>7</c:v></c:pt><c:pt idx="8"><c:v>8</c:v></c:pt><c:pt idx="9"><c:v>9</c:v></c:pt></c:numCache></c:numRef></test>""" xml = get_xml(root) diff = compare_xml(xml, expected) assert diff is None, diff def test_label_number_format(self): ws = self.make_worksheet() for i in range(10): ws.append([i, i]) labels = Reference(ws, (0,0), (0,9)) labels.number_format = 'd-mmm' values = Reference(ws, (0,0), (0,9)) serie = Serie(values=values, labels=labels) c = BarChart() c.add_serie(serie) cw = BarChartWriter(c) root = Element('test') cw._write_serial(root, c._series[0].labels) expected = """<?xml version='1.0' ?><test xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart"><c:numRef><c:f>'data'!$A$1:$J$1</c:f><c:numCache><c:formatCode>d-mmm</c:formatCode><c:ptCount val="10" /><c:pt idx="0"><c:v>0</c:v></c:pt><c:pt idx="1"><c:v>1</c:v></c:pt><c:pt idx="2"><c:v>2</c:v></c:pt><c:pt idx="3"><c:v>3</c:v></c:pt><c:pt idx="4"><c:v>4</c:v></c:pt><c:pt idx="5"><c:v>5</c:v></c:pt><c:pt idx="6"><c:v>6</c:v></c:pt><c:pt idx="7"><c:v>7</c:v></c:pt><c:pt idx="8"><c:v>8</c:v></c:pt><c:pt idx="9"><c:v>9</c:v></c:pt></c:numCache></c:numRef></test>""" xml = get_xml(root) diff = compare_xml(xml, expected) assert diff is None, diff
"""Simple test charts""" from datetime import date import os from openpyxl import Workbook from openpyxl.chart import Chart, Serie, Reference, BarChart, PieChart, LineChart, ScatterChart wb = Workbook() ws = wb.get_active_sheet() ws.title = "Numbers" for i in range(10): ws.append([i]) chart = BarChart() values = Reference(ws, (0, 0), (9, 0)) series = Serie(values) chart.add_serie(series) ws.add_chart(chart) ws = wb.create_sheet(1, "Negative") for i in range(-5, 5): ws.append([i]) chart = BarChart() values = Reference(ws, (0, 0), (9, 0)) series = Serie(values) chart.add_serie(series) ws.add_chart(chart) ws = wb.create_sheet(2, "Letters") for idx, l in enumerate("ABCDEFGHIJ"): ws.append([l, idx, idx]) chart = BarChart() labels = Reference(ws, (0, 0), (9, 0))