Python办公自动化:使用openpyxl处理Excel文件全指南

林舟
林舟
发布时间:2026-10-15| 7人浏览过
原创

本文详细介绍如何使用Python的openpyxl库进行Excel文件自动化处理。内容涵盖库的安装、工作簿与工作表的基本概念、创建与打开文件、按坐标或自动追加方式写入数据、读取指定范围及遍历单元格、删除行列数据,以及利用pandas将CSV文件转换为xlsx格式。通过具体代码示例,帮助开发者掌握Excel文件操作的核心技能。

前言

在Python中处理Excel文件,主要依赖openpyxl库。该库支持的文件格式包括.xlsx、.xlsm、.xltx以及.xltm。

安装openpyxl库的命令为:pip install openpyxl

安装完成后,首先需要理解Excel文件的基本结构,其组成如下图所示:

Excel文件主要包含三个核心对象:

workbook(工作簿):代表整个Excel文件;sheet(工作表):一个工作簿可包含多个工作表,通过名称如“sheet1”、“sheet2”等进行识别;cell(单元格):用于存储具体数据的最小单位。

一、创建、打开excel文件

1、创建空白工作簿

本节演示如何创建一个空的工作簿,并将默认生成的工作表重命名。


#导入库中的工作簿
from  openpyxl import Workbook
 
#创建工作簿 
wb = Workbook()
#获取当前所在的sheet,激活         
sheet = wb.active 
#设置工作表名称,也可以不设置,不设置工作表默认名称为Sheet                   
sheet.title = "工作表1" 
print(sheet.title)        #打印工作表名字
 
#保存表       
wb.save("new_excel.xlsx")  

执行上述代码后,即可成功创建并保存文件。

2、打开已有文件


from  openpyxl import Workbook, load_workbook
 
#加载excel文件
wb = load_workbook("new_excel.xlsx")
#获取所在的工作表
sheet = wb.active
#打印工作表名
print(sheet.title)   #输出"工作表1"

二、工作表中的数据操作

向Excel写入数据时,采用坐标定位方式,每个单元格可通过“列标+行号”的形式表示,具体位置示意如下:

写数据

方法一:自定义位置写入数据

例如,在单元格C3和D3中分别写入指定数据。


#导入库中的工作簿
from  openpyxl import Workbook, load_workbook
 
#加载文件
wb = load_workbook("new_excel.xlsx")
#获取文件的所在工作表
sheet = wb.active
#打印工作表名
print(sheet.title)   #输出工作表1
 
sheet["C3"] = "girl"
sheet["D3"] = "beautiful"
#保存
wb.save("new_excel.xlsx")

方法二:每行自动添加数据

此方法会自动从上到下,在有数据的最后一行的下一行开始,从左到右依次写入列表中的数据。


#导入库中的工作簿
from  openpyxl import Workbook, load_workbook
 
#加载文件
wb = load_workbook("new_excel.xlsx")
#或者文件的所在工作表
sheet = wb.active
#打印工作表名
print(sheet.title)   #输出工作表1
 
sheet.append([11,22,33,44,55])
sheet.append(['aa','bb','cc','dd','ee'])
 
#保存
wb.save("new_excel.xlsx")

读数据

假设表格内容如下所示:


#导入库中的工作簿
from  openpyxl import Workbook, load_workbook
 
#加载文件
wb = load_workbook("cma.xx.xlsx")
 
# 1.打印所有的工作表
print(wb.sheetnames)     #输出 ['cma.xx', 'cma2.xx']
 
# 2.选择一个工作表进入
sheet = wb["cma.xx"]
#print(sheet)             #输出 <Worksheet "cma.xx">
 
# 3.获取单元格A2的值
print(sheet["A2"].value)  #输出 http://api.data.xxx.cn:8090
 
# 4.获取多个单元格的值,在同一行中
for cell in sheet["A2:C2"]:
	for i in cell:
		print(i.value)       #输出具体单元格值
# 5.在不同的行中
for cell in sheet["A2:B4"]:
	for i in cell:
		print(i.value)       #输出具体单元格值
 
# 6.打印表中的所有数据
for row in sheet:                   #遍历每一行
	for i in row:                   #遍历每一行中的每一个单元格       
		print(i.value,end=", ")     #打印每行的单元格数据
	print()
 
# 7.获取指定范围单元格中的数据
for row in sheet.iter_rows(min_row=2, max_row=5, max_col=6):
	for i in row:
		print(i.value,end=', ')
	print()
 
# 8.按列的方式遍历,即以纵向的方式读取数据
for row in sheet.columns:  #从第一列数据开始遍历
	for i in row:          #获取每一列中的每一个数据
		print(i.value,end=", ")
	print()

删除数据

1. 删除整列数据


#导入库中的工作簿
from  openpyxl import Workbook, load_workbook
 
#加载文件
wb = load_workbook("cma.xx.xlsx")
 
# 选择一个工作表进入
sheet = wb["cma.xx"]
 
sheet.delete_cols(2)    #指定删除第二列
sheet.delete_cols(2,3)  #删除第二列的往下三列,包括第二列
 
wb.save("cma.xx.xlsx")

三、csv文件转xlsx

进行文件格式转换时,需特别注意文件的编码方式。在使用pandas读取csv文件时,必须明确指定解码方式以确保数据正确解析。

1. 首先查看需要转换的csv文件的编码方式。可以使用记事本打开csv文件,点击“查看”菜单下的“状态栏”,在文件底部即可查看当前编码格式,例如ANSI。

2. 转换脚本如下:


import pandas as pd
 
def csv_to_xlsx():
    csv = pd.read_csv('cma.xx.csv', encoding='ANSI')
    csv.to_excel('2.xlsx', sheet_name='data', index=False)
 
if __name__ == '__main__':
    csv_to_xlsx()

至此,关于Python办公自动化中Excel处理的介绍已完成。如需了解更多Python与Excel相关的内容,建议搜索本站历史文章或继续浏览后续教程。感谢大家的支持!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。