Python 中 Excel 单元格样式设置的全面总结与指南

时间:2024-10-20 18:04:34

Python 中 Excel 单元格样式设置的全面总结与指南

Excel表格在我们日常工作和学习中用得特别多,特别是调整单元格样式,这样表格看起来就整齐多了。很多操作直接用库就能搞定,不过,里面还是有挺多细节和关键点得留意。

pip install openpyxl

创建表格并写入内容

# coding=utf-8
import openpyxl


# 创建一个excel表格对象
wb = openpyxl.Workbook()
# 获取当前活跃的sheet页,默认就是第一个sheet页
ws = wb.active
# 在表格的单元格中写入内容
ws.cell(row=2, column=3).value = '小斌哥ge'
ws.cell(row=2, column=4).value = '小斌哥ge'
# 处理完成后保存表格,会在当前目录生成一个excel文件
wb.save(filename='cell.xlsx')
# 关闭表格对象
wb.close()

搞个Excel表格,那是设置单元格格式的第一步。咱们能通过写代码来建表格,往里头填东西。给单元格的value属性填值,这样就能输内容,操作起来挺简单明了。还有个法子,就是用cell的参数来设置,比如ws.cell(row=2,=3,value='xxx')。这两种填内容的方法看起来效果一样,具体用哪个得看个人喜好。得先把内容填进表格里,才能继续后面的样式设置等工作。

设置样式的时候,代码加进去的顺序得对。得在单元格里写完东西,存起来(用wb.save())之前加。这顺序搞错了,样式就别想成功用上表格里了。

单元格的高和宽设置

from openpyxl.styles import Font

# 设置字体和文字样式
font = Font(name="微软雅黑", size=12, color='FF0000', bold=True
            italic=True, underline='single', strike=False)
ws.cell(row=2, column=3).font = font

在设置Excel单元格样式时,你会发现单元格的高和宽的设定和我们平时想的不一样。它不是单个单元格一个一个设置,而是按照行和列来统一调整高度和宽度。这是因为Excel默认同一行的高度是一样的,同一列的宽度也是一样的。这样的设置在处理大量数据的表格时,能帮助我们保持数据区域的整体布局整齐。比如说,在处理销售数据表格时,如果所有列宽都一样,数据就能更清晰、有序地展示出来。而且,当我们需要批量设置时,这样的设定还能简化操作过程。

# 设置宽高
# row_dimensions中指定要设置高度的行
ws.row_dimensions[2].height = 50
# column_dimensions中指定要设置宽度的列
ws.column_dimensions['C'].width = 20

若不遵守这个规定,要是单独去改一个单元格的宽和高度,那可能会弄乱整个表格的整齐度,还可能让一些样式和数据显示出问题。

单元格对齐方式

在Excel里,调整单元格对齐是通过使用类来完成的。这得把相应的类分配给cell()这个属性的值。比如,当你建一个员工信息表,名字一般会靠左对齐,而身份证号码可能就得设置成居中或者靠右对齐,这样表格看起来才更漂亮、整齐。而且,在实际操作中,不同类型的数据用不同的对齐方式,能让我们更快地看懂表格里的信息。

from openpyxl.styles import Alignment

# 设置内容的对齐方式
align = Alignment(horizontal='left', vertical='center', text_rotation=0
                  wrap_text=True, shrink_to_fit=True, indent=1)
ws.cell(row=2, column=3).alignment = align

在使用表格时,若发现数据跟表头或列名不匹配,那可能就是单元格的对齐出了问题,得重新调整一下。

单元格填充颜色

from openpyxl.styles import PatternFill

# 设置单元格填充颜色和样式
pattern = PatternFill(fill_type='lightUp', start_color="0000FF", end_color='00FF00')
ws.cell(row=2, column=3).fill = pattern

在Excel表格里,用颜色填充可以让表格看起来更漂亮,或者让关键信息更醒目。这其实是通过设置“类”来实现的,不过这里的“类”是给单元格的填充属性“fill”分配的。比如,做项目进度表时,可以把已经完成的任务用绿色填充,正在进行的任务用黄色填充,还没开始的任务用红色填充。这样一来,我们就能一眼看出项目的整体进度了。

在设置填充颜色的时候,得注意,如果这个单元格里头还有其他样式,颜色得跟这些样式搭调,别弄出冲突或者看起来不搭。好比说,你把单元格填成深色,但里面的文字是白色,那打印出来会不会有问题,这种事情得考虑清楚。

纯色填充之外,渐变颜色填充也是一种可行的选择。比如在做公司业绩展示表时,运用渐变颜色能让业绩变化趋势显得更加生动。渐变颜色的填充方法跟纯色类似,就是给cell()的fill属性赋值。这样的渐变颜色能让人更容易注意到我们想要强调的数据单元格。

from openpyxl.styles import GradientFill

# linear模式,根据stop设置的多个颜色渐变填充,degree设置顺时针的旋转角度
# gradient = GradientFill(type='linear', degree=30, 
#                         stop=('FF0000', '00FF00', '0000FF'))
# path模式,根据stop设置的多个颜色从左上角至右下角、由内至外填充,
# left,right,top,bottom设置上下左右距离边框的距离百分比
gradient = GradientFill(type='path', left=0.1, right=0.1, top=0.1, bottom=0.1
                        stop=('FF0000''00FF00''0000FF'))
# ws.cell(row=2, column=3).fill = gradient

不过,跟纯色填充不一样的是,渐变颜色在不同的Excel版本或者不同的显示器上,可能会显示出稍微不同的效果。所以得提前检查一下,调整调整,保证显示效果是OK的。

单元格边框样式

单元格的边框样式是通过一个类来设定的,这个类会赋予cell()函数相应的属性。在设置边框样式时,我们还会使用Side类来调整线条的样式,并将这个样式作为参数传递给类。需要注意的是,如果在设置单元格边框之前,已经设置了单元格的对齐方式,特别是其中的单元格旋转参数,这会影响到边框的角度。举个例子,在设计表格表头时,如果需要设计一条斜线来区分行列,就得考虑到这些参数之间的相互影响。

不同的操作版本可能会有所不同,有的版本可能不支持调整单元格的边界线、竖直方向、水平方向,也不能设置斜线或斜线的倾斜度等特性。

了解了这么多关于Excel单元格样式调整的技巧,等你自己操作表格的时候,打算先试哪一项功能?希望各位能多给个赞,也欢迎把你们的使用心得在评论区晒一晒。

from openpyxl.styles import Side, Border

# 设置线条的样式和颜色
side = Side(style="thick", color="FF0000")
# 设置单元格的边框线条
border = Border(top=side, bottom=side, left=side, right=side)
ws.cell(row=2, column=3).border = border