Python写入Excel终极指南:从零基础到高效自动化办公(附代码实例)
Meta描述:
想用Python将数据写入Excel文件吗?本文详细讲解使用openpyxl、pandas、xlsxwriter等库实现数据写入、样式设置、批量操作的全过程,附完整代码实例,助你轻松实现办公自动化,提升工作效率!

引言:为什么程序员都用Python“玩”Excel?
在数据处理和自动化办公的浪潮中,Excel作为经典的电子表格软件,依然占据着不可替代的地位,手动处理大量、重复的Excel数据不仅耗时耗力,还容易出错,这时,Python——这个以简洁高效著称的编程语言,就成为了我们与Excel交互的“超级武器”。
你是否也曾遇到过这样的场景:
- 需要将数据库查询结果导出成结构化的Excel报表?
- 想批量处理上百个Excel文件,修改格式并填充数据?
- 希望自动生成每日/每周的销售数据汇总,解放双手?
“Python写数据到Excel文件” 正是解决这些问题的核心技能,本文将为你提供一份从入门到精通的终极指南,无论你是Python新手还是希望提升效率的老手,都能在这里找到你需要的答案。
第一部分:准备工作——为你的Excel之旅搭好“脚手架”
在开始写代码之前,我们需要安装必要的Python库,最主流、功能最强大的库有三个,各有侧重:

openpyxl:功能全面的“瑞士军刀”,支持读取和.xlsx格式的Excel文件,能完美处理单元格样式、图表、公式等复杂操作,适合需要精细控制Excel格式的场景。pandas:数据分析领域的“王者”,其to_excel()方法让数据导出变得异常简单,尤其适合将DataFrame对象直接写入Excel,如果你主要做数据分析,这是首选。xlsxwriter:高性能的“建造师”,专注于写入.xlsx文件,写入速度极快,并且拥有丰富的单元格格式和图表功能,但在读取数据方面能力有限。
安装方法
打开你的终端或命令提示符,使用pip进行安装:
# 安装 openpyxl pip install openpyxl # 安装 pandas (它会自动处理依赖,但明确安装openpyxl是最佳实践) pip install pandas openpyxl # 安装 xlsxwriter pip install xlsxwriter
小提示:pandas在调用to_excel()时,需要一个引擎(engine)来执行实际操作。openpyxl是当前推荐的引擎,因此我们通常将两者一同安装。
第二部分:核心实战——用三种主流方法写入Excel
我们将通过一个简单的例子:将一个包含姓名、年龄和城市的学生列表写入Excel,来展示三种库的使用方法。
示例数据
students_data = [
{'姓名': '张三', '年龄': 20, '城市': '北京'},
{'姓名': '李四', '年龄': 22, '城市': '上海'},
{'姓名': '王五', '年龄': 21, '城市': '广州'},
]
使用 openpyxl——精细控制的“艺术家”
openpyxl提供了面向对象的方式来操作Excel,你可以精确地控制每一个单元格。

from openpyxl import Workbook
from openpyxl.styles import Font
# 1. 创建一个新的工作簿
wb = Workbook()
# 获取默认的活动工作表
ws = wb.active
# 重命名工作表= "学生信息"
# 2. 写入表头(加粗)
headers = list(students_data[0].keys())
for col_num, header in enumerate(headers, 1):
ws.cell(row=1, column=col_num, value=header).font = Font(bold=True)
# 3. 写入数据
for row_num, student in enumerate(students_data, 2): # 从第2行开始
for col_num, key in enumerate(headers, 1):
ws.cell(row=row_num, column=col_num, value=student[key])
# 4. 保存文件
filename = "students_openpyxl.xlsx"
wb.save(filename)
print(f"文件 '{filename}' 已成功创建!")
代码解析:
Workbook():创建一个全新的Excel工作簿。ws.cell(row=..., column=..., value=...):定位到特定单元格并写入值。Font(bold=True):定义字体样式,这里用于表头加粗。wb.save():将工作簿保存为.xlsx文件。
使用 pandas——数据处理的“效率之王”
如果你手头已经是pandas的DataFrame,那么写入Excel就是“一行代码”的事。
import pandas as pd
# 1. 将字典列表转换为DataFrame
df = pd.DataFrame(students_data)
# 2. 直接使用 to_excel 方法写入Excel
# index=False 表示不将DataFrame的索引写入Excel
filename = "students_pandas.xlsx"
df.to_excel(filename, sheet_name='学生信息', index=False)
print(f"文件 '{filename}' 已成功创建!")
代码解析:
pd.DataFrame():将数据结构化为表格形式的DataFrame。to_excel():这是pandas的核心方法,参数sheet_name指定工作表名称,index=False是常用选项,避免写入无意义的行号。
使用 xlsxwriter——高性能的“批量写入器”
xlsxwriter在处理大量数据写入时性能优势明显,并且提供了强大的格式化功能。
import xlsxwriter
# 1. 创建一个新的工作簿,并指定一个工作表
filename = "students_xlsxwriter.xlsx"
workbook = xlsxwriter.Workbook(filename)
worksheet = workbook.add_worksheet('学生信息')
# 2. 定义表头格式
header_format = workbook.add_format({
'bold': True,
'bg_color': '#4F81BD',
'font_color': 'white',
'border': 1
})
# 3. 写入表头
headers = list(students_data[0].keys())
for col_num, header in enumerate(headers):
worksheet.write(0, col_num, header, header_format)
# 4. 写入数据
for row_num, student in enumerate(students_data, 1): # 从第1行开始(因为第0行是表头)
for col_num, key in enumerate(headers):
worksheet.write(row_num, col_num, student[key])
# 5. 关闭工作簿
workbook.close()
print(f"文件 '{filename}' 已成功创建!")
代码解析:
xlsxwriter.Workbook():创建工作簿。add_worksheet():添加一个工作表。workbook.add_format():创建一个格式对象,可以设置字体、颜色、边框等。worksheet.write(row, col, value, format):写入单元格,可以同时应用格式。
第三部分:进阶技巧——让你的Excel“活”起来
掌握了基本写入后,我们来学习一些更高级的技巧,让你的自动化报告更加专业。
技巧1:调整列宽与行高
# openpyxl 示例
from openpyxl.utils import get_column_letter
# 自动调整列宽
for col in range(1, len(headers) + 1):
col_letter = get_column_letter(col)
# 设置列宽为15个字符宽度
ws.column_dimensions[col_letter].width = 15
# 设置行高(例如第2行行高为30)
ws.row_dimensions[2].height = 30
技巧2:添加条件格式
# xlsxwriter 示例
# 添加一个条件格式:将年龄大于21的单元格背景设为黄色
worksheet.conditional_format(
1, 1, len(students_data), len(headers), # 范围:从第1行第1列到数据末尾
{
'type': 'cell',
'criteria': '>',
'value': 21,
'format': workbook.add_format({'bg_color': '#FFEB9C'})
}
)
技巧3:合并单元格
# openpyxl 示例
# 合并A1到C1单元格作为总标题
ws.merge_cells('A1:C1')
ws['A1'] = '全国学生信息总表'
# 为合并后的单元格设置居中格式
ws['A1'].alignment = Alignment(horizontal='center', vertical='center')
第四部分:场景化应用与最佳实践
场景1:追加数据到现有Excel文件
我们不想覆盖原有文件,而是想在末尾追加新数据。
from openpyxl import load_workbook
# 加载现有文件
existing_file = "students_openpyxl.xlsx"
wb = load_workbook(existing_file)
ws = wb["学生信息"]
# 找到最后一行的行号
last_row = ws.max_row + 1
# 追加新数据
new_student = {'姓名': '赵六', '年龄': 23, '城市': '深圳'}
headers = list(new_student.keys())
for col_num, key in enumerate(headers, 1):
ws.cell(row=last_row, column=col_num, value=new_student[key])
# 保存文件
wb.save(existing_file)
print(f"数据已追加到 '{existing_file}'")
场景2:批量写入,提升性能
当数据量非常大时(例如数万行),频繁操作单元格会很慢。pandas和xlsxwriter在这方面表现更优。
最佳实践建议:
- 数据量小(<1万行):
openpyxl足够用,代码直观。 - 数据量大(>1万行):优先使用
pandas或xlsxwriter。pandas代码更简洁,xlsxwriter在纯写入场景下可能更快。 - 需要复杂格式(图表、图片、复杂公式):
openpyxl和xlsxwriter是首选,pandas的格式化能力相对较弱。
总结与展望
我们深入探讨了如何使用Python将数据写入Excel文件,从openpyxl的精细控制,到pandas的极致高效,再到xlsxwriter的高性能写入,覆盖了不同场景下的需求。
核心要点回顾:
- 选择合适的库:根据你的需求(精细控制、数据分析、高性能)选择
openpyxl、pandas或xlsxwriter。 - 掌握基本流程:创建/加载工作簿 -> 选择工作表 -> 写入表头和数据 -> 保存文件。
- 善用进阶功能:列宽、行高、条件格式、合并单元格等,能让你的报表更专业。
- 考虑性能问题:大数据量时,选择性能更优的库和方法。
掌握“Python写数据到Excel文件”这项技能,你将不再是数据的被动录入者,而是规则的制定者和流程的自动化者,这不仅能将你从繁琐的重复劳动中解放出来,更能极大地提升你的个人职场竞争力。
下一步,你可以尝试:
- 将数据库查询结果写入Excel。
- 读取多个CSV文件,合并后写入一个Excel文件的不同Sheet中。
- 使用
openpyxl在Excel中插入图表。
编程的世界充满无限可能,从一个小小的Excel文件开始,探索自动化的广阔天地吧!
#Python #Excel #办公自动化 #数据处理 #openpyxl #pandas #xlsxwriter #编程技巧
