python设置excel表样式

这段代码展示了如何使用Python的openpyxl库批量调整多个Excel文件的工作表格式,包括设置列宽、定义单元格样式(如颜色、边框、对齐方式),并将这些样式应用于表头、表中和表尾的单元格。最后,它会保存样式修改后的文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

应用场景:将数个excel表的格式调整成统一的

思路:

一、打开工作表

import os

# 设置文件夹路径
path='./test/'
# 返回当前目录下所有文件名
files = os.listdir(path)
# 循环文件名列表
for file in files:
    # 拼接文件路径
    file_path = path + file

    # 打开工作簿
    wb = load_workbook(file_path)
    # 打开工作表
    ws = wb.active

 二、调整列宽

需要用到Sheet.column_dimensions['列位置'].width

    #调整列宽
    ws.column_dimensions['A'].width=20
    ws.column_dimensions['B'].width=30

三、定义单元格样式

选择样式属性定义该属性的样式值 , 赋值修改(具体各个)单元格的样式值

对于所有单元格样式的修改可以分为两个功能块:“定义单元格样式” 和 “循环修改单元格”

1.边框样式Cell.border属性表示

2.颜色填充Cell.fill属性表示

3.对齐方式Cell.alignment属性表示。

 

    #定义单元格样式

    #定义表头颜色为橙色
    header_fill=PatternFill('solid',fgColor='FF7F24')
        #定义表中颜色为浅黄色
    content_fill=PatternFill('solid',fgColor='FFFFE0')
        #定义表尾颜色为淡橘红色
    bottom_fill=PatternFill('solid',fgColor='EE9572')

    #定义对其方式,纵向居中,横向居中
    align=Alignment(horizontal='center',vertical='center')

    #定义边样式为细条
    side=Side('thin')
    #定义表头边框样式有底边、右边
    head_border=Border(bottom=side,right=side)
    #定义表中边框样式有左边
    content_border=Border(left=side)

四、循环修改表格样式

1、修改“表头”的单元格样式

表头是第一行的单元格,取出这一行用ws[1]。然后就可以用for cell in ws[1]取出每个单元格,再来对单元格的样式属性进行修改。

    #取出第一行单元格
    for cell in ws[1]:
        #设置单元格填充颜色
        cell.fill=header_fill
        #设置单元格对其方式
        cell.alignment=align
        #设置单元格边框
        cell.border=head_border

2、修改“表中”的单元格样式

取出工作表中一定范围的数据,使用iter_rows(min_row,max_row),此时values_only默认为False,要进行样式修改的,不能只取数值,从第2行到倒数第2行

    #取出表中的各行,第二行到倒数第二行
    for row in ws.iter_rows(min_row=2,max_row=ws.max_row-1):
        for cell in row:
            cell.fill=content_fill
            cell.alignment=align
            cell.border=content_border

3、修改“表尾”的单元格样式

    #取出表尾
    for cell in ws[ws.max_row]:
        cell.fill=bottom_fill   
        cell.alignment=align
        cell.border=content_border

五、保存工作簿

   wb.save(file_path)

结果如下:

 

完成代码如下:

# 导入模块
import os
from openpyxl import load_workbook
from openpyxl.styles import PatternFill,Alignment,Side,Border


# 设置文件夹路径
path='./test/'
# 返回当前目录下所有文件名
files = os.listdir(path)
# 循环文件名列表
for file in files:
    # 拼接文件路径
    file_path = path + file

    # 打开工作簿
    wb = load_workbook(file_path)
    # 打开工作表
    ws = wb.active

    #调整列宽
    ws.column_dimensions['A'].width=20
    ws.column_dimensions['B'].width=30

    #定义单元格样式

    #定义表头颜色为橙色
    header_fill=PatternFill('solid',fgColor='FF7F24')
        #定义表中颜色为浅黄色
    content_fill=PatternFill('solid',fgColor='FFFFE0')
        #定义表尾颜色为淡橘红色
    bottom_fill=PatternFill('solid',fgColor='EE9572')

    #定义对其方式,纵向居中,横向居中
    align=Alignment(horizontal='center',vertical='center')

    #定义边样式为细条
    side=Side('thin')
    #定义表头边框样式有底边、右边
    head_border=Border(bottom=side,right=side)
    #定义表中边框样式有左边
    content_border=Border(left=side)
        
    #取出第一行单元格
    for cell in ws[1]:
        #设置单元格填充颜色
        cell.fill=header_fill
        #设置单元格对其方式
        cell.alignment=align
        #设置单元格边框
        cell.border=head_border

    #取出表中的各行,第二行到倒数第二行
    for row in ws.iter_rows(min_row=2,max_row=ws.max_row-1):
        for cell in row:
            cell.fill=content_fill
            cell.alignment=align
            cell.border=content_border
        
    #取出表尾
    for cell in ws[ws.max_row]:
        cell.fill=bottom_fill   
        cell.alignment=align
        cell.border=content_border

    wb.save(file_path)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值