只要是和数据打交道的人,就避免不了接触 Excel。对于大量的重复性工作,靠人工往往会耗费大量的时间。借助 Python 编程,可以批量自动化完成这些操作,起到事半功倍的效果。
我们知道 Pandas 模块它能够方便快捷地处理 Excel 数据,但是对于 Excel 格式的设置,借助openpyxl模块是一个很好的选择,这也是本文的重点内容。
Excel 文档格式美化
本节主要为大家讲述如何美化 Excel 文档,使我们的 Excel 更美观、更实用。
单元格样式设置
Excel 中的每个单元格,都可以根据自己的实际需求,进行样式设置。单元格样式设置一共涉及字体样式、对齐样式、边框样式和填充样式等 4 个方面的内容,具体介绍如下。
Font():字体样式设置。
Alignment():对齐样式设置。
Side()和Border():边框样式设置。
PatternFill():填充样式设置。
Font()方法的语法格式如图所示。

Alignment()方法的语法格式如图所示。

Side()和Border()方法的语法格式如图所示。

PatternFill()方法的语法格式如图所示。

案例:批量设置单元格样式
对于如图所示的工作簿,如何批量对多个单元格设置不同的单元格样式呢?

在交互式环境中输入如下命令:
from openpyxl import load_workbookfrom openpyxl.styles import Font, Alignment, Side, Border, PatternFillwb = load_workbook("样式设计.xlsx")ws = wb["广东"]cell1 = ws["A3"]font = Font(name="微软雅黑", size=20, bold=True, italic=True, color="FF0000")cell1.font = fontcell2 = ws["C3"]alignment = Alignment(horizontal="center")cell2.alignment = alignmentcell3 = ws["E3"]side1 = Side(style="double", color="6A5ACD")side2 = Side(style="dashed", color="FFFF0000")border = Border(left=side1, right=side1, top=side2, bottom=side2)cell3.border = bordercell4 = ws["G3"]pattern_fill = PatternFill(fill_type="solid", fgColor="99ccff")cell4.fill = pattern_fillwb.save("样式设计_设置.xlsx")

在1处,我们需要导入openpyxl.styles模块中的Font()、Alignment()、Side()、Border()和PatternFill()方法,来完成单元格样式的设置。
在2处,我们读取了本地的 Excel 文档,并得到了一个工作表对象 ws。紧接着,又分别获取了 A3、C3、E3、G3 这 4 个单元格的单元格对象(见3、6、9、14)。在4处,调用Font()方法,将字体设置为微软雅黑,字号大小设置为 20,还设置了加粗、斜体,并进行了字体颜色设置。
在7处,调用Alignment()方法,将单元格设置为水平对齐。
在10 ~ 12处,我们两次调用Side()方法,分别设置了double和dashed两种边框样式。接着,再调用Border()方法,将单元格的左、右边框进行了side1样式设置,将单元格的上、下边框进行了side2样式设置。
在15处,我们调用PatternFill()方法,将填充样式设置为solid(solid 是最常用的图案样式,表示纯色填充)。
最后,分别调用单元格对象的font、alignment、border、fill属性,利用赋值操作(见5、8、13、16),完成了所有单元格样式的设置。此时,每个单元格便应用上了各自的样式,最终效果如图所示。

小贴士
关于“对齐方式”“边框样式”“填充图案样式”的设置,可以参考附录 A。
夜雨聆风