Python使用openpyxl自动化实现Excel排版与读写

晚来风
晚来风
发布时间:2026-10-12 | 1人浏览过
原创

本文详解如何利用Python的openpyxl库自动化处理Excel文件。内容涵盖加载与读写单元格、修改数据、设置字体与颜色、调整对齐方式及边框,以及控制行高列宽。通过具体代码示例,展示如何批量生成格式规范的报表,解决手动排版效率低的问题。

自动化处理Excel的核心逻辑

在办公场景中,经常需要对现有的Excel文件进行读取、修改并重新排版。使用 openpyxl 库可以高效完成这些任务,其核心操作对象分为三个层级:Workbook(代表整个Excel文件)、Worksheet(代表具体的Sheet页)以及 Cell(代表单元格)。基本操作流程为:加载工作簿、定位工作表、操作单元格数据与格式,最后保存文件。

读写已有Excel文件

处理现有文件时,首先需要加载目标文件并定位到具体的工作表。以下示例演示如何读取名为“成绩表”的工作表,获取特定单元格的值,修改数据,并遍历多行数据。

import openpyxl

# 1. 加载已存在的Excel文件
wb = openpyxl.load_workbook("data.xlsx")

# 2. 获取工作表
# 获取所有sheet的名字: print(wb.sheetnames)
sheet = wb["成绩表"]

# 3. 读取单元格的值
cell_val = sheet["B2"].value
print(f"B2单元格的值是: {cell_val}")

# 4. 修改单元格的值
sheet["C2"] = 98

# 5. 遍历多行数据
for row in sheet.iter_rows(min_row=2, max_row=5, min_col=1, max_col=3, values_only=True):
    print(row) # 输出每一行的数据元组

# 6. 保存修改(注意:如果在打开状态下保存会报错,请先关闭Excel软件)
wb.save("data_modified.xlsx")

单元格格式美化

除了数据内容,Excel的排版同样重要。openpyxl 提供了 styles 模块,可以精细控制单元格的字体、对齐方式、背景填充色和边框样式。

设置字体

通过 Font 类可以定义字体的名称、大小、加粗状态及颜色。例如,将A1单元格的字体设置为微软雅黑、14号、加粗且为红色:

from openpyxl.styles import Font

# 设置字体为微软雅黑,大小14,加粗,红色
custom_font = Font(name="微软雅黑", size=14, bold=True, color="FF0000")
sheet["A1"].font = custom_font

设置对齐方式

使用 Alignment 类可以控制文本的水平与垂直对齐方式,常用于制作居中标题:

from openpyxl.styles import Alignment

# 设置水平居中、垂直居中
align = Alignment(horizontal="center", vertical="center")
sheet["A1"].alignment = align

设置背景填充色

利用 PatternFill 类可以设置单元格的背景颜色,支持纯色填充及十六进制颜色代码:

from openpyxl.styles import PatternFill

# 设置背景色为纯色填充,黄色 (Hex颜色代码)
fill = PatternFill(fill_type="solid", start_color="FFFF00")
sheet["A1"].fill = fill

设置边框

通过 Border 和 Side 类可以定义单元格的边框样式。以下代码演示如何为单元格添加细黑色边框:

from openpyxl.styles import Border, Side

# 定义细边框线条
thin_line = Side(border_style="thin", color="000000")

# 设置上下左右四个边框
border = Border(left=thin_line, right=thin_line, top=thin_line, bottom=thin_line)
sheet["A1"].border = border

调整行高与列宽

当单元格内容过长显示为“###”时,需要调整行高或列宽。可以通过 row_dimensions 和 column_dimensions 属性直接设置:

# 设置第一行的行高为 30
sheet.row_dimensions[1].height = 30

# 设置A列的列宽为 20
sheet.column_dimensions["A"].width = 20

总结与注意事项

利用 openpyxl 的格式设置功能,可以编写脚本自动生成日报、周报等格式规范的Excel文件。需要注意的是,处理大量数据(如10万条以上)时,openpyxl 的筛选统计速度可能较慢,后续可考虑引入 pandas 库进行更高效的数据处理。此外,保存文件前请确保Excel软件已关闭,否则可能引发文件占用报错。

以上就是Python使用openpyxl自动化实现Excel排版与读写的详细内容,更多关于Python Excel自动化处理、openpyxl格式设置技巧的资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表