杰瑞科技汇

Python如何将数据写入Excel文件?

Python写入Excel终极指南:从零基础到高效自动化办公(附代码实例)

Meta描述:

想用Python将数据写入Excel文件吗?本文详细讲解使用openpyxl、pandas、xlsxwriter等库实现数据写入、样式设置、批量操作的全过程,附完整代码实例,助你轻松实现办公自动化,提升工作效率!

Python如何将数据写入Excel文件?-图1
(图片来源网络,侵删)

引言:为什么程序员都用Python“玩”Excel?

在数据处理和自动化办公的浪潮中,Excel作为经典的电子表格软件,依然占据着不可替代的地位,手动处理大量、重复的Excel数据不仅耗时耗力,还容易出错,这时,Python——这个以简洁高效著称的编程语言,就成为了我们与Excel交互的“超级武器”。

你是否也曾遇到过这样的场景:

  • 需要将数据库查询结果导出成结构化的Excel报表?
  • 想批量处理上百个Excel文件,修改格式并填充数据?
  • 希望自动生成每日/每周的销售数据汇总,解放双手?

“Python写数据到Excel文件” 正是解决这些问题的核心技能,本文将为你提供一份从入门到精通的终极指南,无论你是Python新手还是希望提升效率的老手,都能在这里找到你需要的答案。


第一部分:准备工作——为你的Excel之旅搭好“脚手架”

在开始写代码之前,我们需要安装必要的Python库,最主流、功能最强大的库有三个,各有侧重:

Python如何将数据写入Excel文件?-图2
(图片来源网络,侵删)
  1. openpyxl:功能全面的“瑞士军刀”,支持读取和.xlsx格式的Excel文件,能完美处理单元格样式、图表、公式等复杂操作,适合需要精细控制Excel格式的场景。
  2. pandas:数据分析领域的“王者”,其to_excel()方法让数据导出变得异常简单,尤其适合将DataFrame对象直接写入Excel,如果你主要做数据分析,这是首选。
  3. 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,你可以精确地控制每一个单元格。

Python如何将数据写入Excel文件?-图3
(图片来源网络,侵删)
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:批量写入,提升性能

当数据量非常大时(例如数万行),频繁操作单元格会很慢。pandasxlsxwriter在这方面表现更优。

最佳实践建议

  • 数据量小(<1万行)openpyxl足够用,代码直观。
  • 数据量大(>1万行):优先使用pandasxlsxwriterpandas代码更简洁,xlsxwriter在纯写入场景下可能更快。
  • 需要复杂格式(图表、图片、复杂公式)openpyxlxlsxwriter是首选,pandas的格式化能力相对较弱。

总结与展望

我们深入探讨了如何使用Python将数据写入Excel文件,从openpyxl的精细控制,到pandas的极致高效,再到xlsxwriter的高性能写入,覆盖了不同场景下的需求。

核心要点回顾

  1. 选择合适的库:根据你的需求(精细控制、数据分析、高性能)选择openpyxlpandasxlsxwriter
  2. 掌握基本流程:创建/加载工作簿 -> 选择工作表 -> 写入表头和数据 -> 保存文件。
  3. 善用进阶功能:列宽、行高、条件格式、合并单元格等,能让你的报表更专业。
  4. 考虑性能问题:大数据量时,选择性能更优的库和方法。

掌握“Python写数据到Excel文件”这项技能,你将不再是数据的被动录入者,而是规则的制定者和流程的自动化者,这不仅能将你从繁琐的重复劳动中解放出来,更能极大地提升你的个人职场竞争力。

下一步,你可以尝试:

  • 将数据库查询结果写入Excel。
  • 读取多个CSV文件,合并后写入一个Excel文件的不同Sheet中。
  • 使用openpyxl在Excel中插入图表。

编程的世界充满无限可能,从一个小小的Excel文件开始,探索自动化的广阔天地吧!


#Python #Excel #办公自动化 #数据处理 #openpyxl #pandas #xlsxwriter #编程技巧

分享:
扫描分享到社交APP
上一篇
下一篇