如何使用openpyxl设置图表区域的图形属性

时间:2018-01-17 15:57:32

标签: python python-3.x charts openpyxl

我想更改Chart_area的背景颜色以及删除所有边框。关于背景颜色,我尝试了建议的解决方案:How to set Background Color of Plot Area of Chart using openpyxl但是此解决方案不适用于任何图表,即BarChart,AreaChart,LineChart,ScatterChart,RadarChart等...我尝试了两个openpyxl版本:2.4.7 ,2.4.9。没有成功。

# setup the chart
chart = LineChart()
# test to remove border line 
*****************************************************
chart.graphical_properties = 
GraphicalProperties(ln=LineProperties(noFill=True))
chart.height = 9
chart.width = 13.4
props = GraphicalProperties(solidFill="f2f2f2")

# setup and append the first series
list_names = ['Fund', 'Market', 'Benchmark']
data = Reference(ws2, min_col=2, min_row=1, max_col=n + 1, max_row=p + 
1)

chart.x_axis.number_format = 'mmm yy'
chart.x_axis.majorTimeUnit = "months"
chart.add_data(data, titles_from_data=True)
dates = Reference(ws2, min_col=1, min_row=2, max_col=1, max_row=1 + p)
chart.set_categories(dates)
# Style the lines
chart.series[0].graphicalProperties.line.solidFill = "7E3F00"
chart.series[1].graphicalProperties.line.solidFill = "45788C"
chart.series[2].graphicalProperties.line.solidFill = "8BADD9"
chart.plot_area.graphicalProperties = props
# test to change background color 
*****************************************************
chart.graphical_properties = props
ws1.add_chart(chart, "B14") 

我还尝试删除chart_area的边框。我找到了这篇文章:openpyxl - Ability to remove border from charts?。但我不明白如何处理修改库。我有点惊讶,没有更简单的方法。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

此过程可能有助于找到答案。

  1. 打开一个新的Excel电子表格并创建一个感兴趣的图表 默认设置。用文件名保存 "默认图表保存的逐个excel.xlsx"
  2. 现在通过将背景颜色更改为紫色(十六进制)来修改图表 代码' AA00AA')。用文件名保存 " redBG-图表保存的逐个excel.xlsx"并且关闭excel。
  3. 使用zip程序(7zip或类似程序)打开默认的Excel文件 并提取xl>图表> chart1.xml文件到你的工作 夹。将其重命名为" default-chart-saved-by-excel.xml"重复一遍 " redBG"情况下。
  4. 使用所选的XML编辑器打开两个xml文件(某些Web 浏览器运行良好)并寻找具有的xml代码块 通过搜索紫色十六进制代码来改变' AA00AA'那个块是你想要openpyxl定位的。