
使用Python开发微软的Excel通常需要使用第三方库,如xlrd、xlwt、xlutils、xlwings、win32com、openpyxl、pandas等,各种第三方库都有自己独特的功能和缺陷,因此在采用这些第三方库之前需要慎重考虑。
如:xlrd只能读取在Excel文件中的数据;xlwt只能在Excel文件中写入数据;xlutils虽然可以读写Excel文件的数据,但是它依赖于xlrd和xlwt;xlwings可以从Excel中调用Python,也可在Python中调用Excel;win32com可以独立读写Excel文件的数据;openpyxl也可以独立读写Excel文件的数据;pandas能够读写在Excel文件中的数据,但是它需要xlrd/xlwt/openpyxl/xlsxwriter等库的配合。
下面介绍两个Python辅助Excel实例,分别是自定义柱形图柱子的填充颜色,和自定义柱形图柱子的边框颜色。
实例功能
此案例主要通过使用指定的颜色设置柱形图指定柱子(myColumns[0])的填充颜色(myColumns[0].graphicalProperties.solidFill属性),从而实现在柱形图中自定义各个柱子的填充颜色。当运行此案例的Python代码(A443.py文件)之后,在“员工表.xlsx”文件中将根据员工表的员工人数创建柱形图,并使用指定的颜色自定义柱形图的各个柱子的填充颜色,如图1所示。

■ 图1
实现代码
import openpyxl
myBook=openpyxl.load_workbook('员工表.xlsx')
mySheet=myBook.active
myBarChart=openpyxl.chart.BarChart()
myBarChart.add_data(openpyxl.chart.Reference(mySheet,min_col=2,
min_row=3,max_row=8),titles_from_data=True)
myBarChart.set_categories(openpyxl.chart.Reference(mySheet,
min_col=1,min_row=4,max_row=8))
myBarChart.legend=None
myBarChart.title="使用柱形图展示华茂集团员工人数"
myBarChart.style=26
#自定义柱形图(myBarChart)各个柱子的填充颜色
myColumns=[openpyxl.chart.series.DataPoint(idx=i) for i in range(5)]
myBarChart.series[0].data_points=myColumns
myColumns[0].graphicalProperties.solidFill="FAE1D0"
myColumns[1].graphicalProperties.solidFill="BB2244"
myColumns[2].graphicalProperties.solidFill="22DD22"
myColumns[3].graphicalProperties.solidFill="61210B"
myColumns[4].graphicalProperties.solidFill="915102"
mySheet.add_chart(myBarChart,"C1")
myBook.save('结果表-员工表.xlsx')
代码说明
在上面这段代码中,myColumns[1].graphicalProperties.solidFill ="BB2244"表示使用深红色(BB2244)填充第2个柱子(myColumns[1])。
此案例的源文件是MyCode\A443\A443.py。

扫码观看讲解视频
实例功能
此案例主要通过使用指定的颜色设置柱形图指定柱子(myColumns[0])的边框颜色(myColumns[0].graphicalProperties.line.solidFill属性),从而实现在柱形图中自定义各个柱子的边框颜色。当运行此案例的Python代码(A444.py文件)之后,在“员工表.xlsx”文件中将根据员工表的员工人数创建柱形图,并使用指定的颜色自定义柱形图的各个柱子的边框颜色,如图2所示。

■ 图2
实现代码
import openpyxl
myBook=openpyxl.load_workbook('员工表.xlsx')
mySheet=myBook.active
myBarChart=openpyxl.chart.BarChart()
myBarChart.add_data(openpyxl.chart.Reference(mySheet,min_col=2,
min_row=3,max_row=8),titles_from_data=True)
myBarChart.set_categories(openpyxl.chart.Reference(mySheet,
min_col=1,min_row=4,max_row=8))
myBarChart.legend=None
myBarChart.y_axis.majorGridlines=None
myBarChart.title="使用柱形图展示华茂集团员工人数"
myColumns=[openpyxl.chart.series.DataPoint(idx=i) for i in range(5)]
myBarChart.series[0].data_points=myColumns
#取消第1个柱子的填充颜色
myColumns[0].graphicalProperties.noFill=True
#设置第1个柱子的边框颜色为黑色
myColumns[0].graphicalProperties.line.solidFill="000000"
#取消第2个柱子的填充颜色
myColumns[1].graphicalProperties.noFill=True
#设置第2个柱子的边框颜色为红色
myColumns[1].graphicalProperties.line.solidFill="FF0000"
#取消第3个柱子的填充颜色
myColumns[2].graphicalProperties.noFill=True
#设置第3个柱子的边框颜色为绿色
myColumns[2].graphicalProperties.line.solidFill="00FF00"
#取消第4个柱子的填充颜色
myColumns[3].graphicalProperties.noFill=True
#设置第4个柱子的边框颜色为蓝色
myColumns[3].graphicalProperties.line.solidFill="0000FF"
#取消第5个柱子的填充颜色
myColumns[4].graphicalProperties.noFill=True
#设置第5个柱子的边框颜色为青色
myColumns[4].graphicalProperties.line.solidFill="00FFFF"
mySheet.add_chart(myBarChart,"C1")
myBook.save('结果表-员工表.xlsx')
代码说明
在上面这段代码中,myColumns[0].graphicalProperties.noFill=True表示取消第1个柱子的填充颜色。myColumns[0].graphicalProperties.line.solidFill="000000"表示使用黑色绘制第1个柱子的边框。
此案例的源文件是MyCode\A444\A444.py。
补充说明
阅读和使用本书案例要求读者具备一定的Python语言编程基础和操作Excel的基本常识,关于Python语法基础可以参考Python 基础语法教程(https://www.runoob.com/python/python-basic-syntax.html)。

扫码观看讲解视频
源代码下载
关注微信公众号,后台回复关键词 “Python辅助ExcelV182” 即可获得完整源代码。


参考书籍
《Python辅助Word+Excel:让办公更高效》
ISBN:9787302592464
作者:罗帅、罗斌
定价:99.8元


扫码优惠购书
347个典型办公场景
问题描述+解决方案+真实源码+效果截图
Python+Word+Excel实现办公自动化,
成倍提高办公效率
优化数据分析,让工作省点力!
告别重复劳动,蜕变职场精英!











