Python 导出数据到 Excel 完整指南
在 Python 中,将数据导出到 Excel 最常用的方式是通过 Pandas 库,因为它提供了极其简便的接口,针对不同的需求(如格式定制、修改现有文件),还可以使用 openpyxl 或 XlsxWriter。
使用 Pandas(最推荐,适用于数据分析)
Pandas 是处理表格数据的标准库,其 to_excel 方法可以将 DataFrame 直接转换为 Excel 文件。
安装依赖
pip install pandas openpyxl
基础代码示例
import pandas as pd
# 1. 准备数据
data = {
'姓名': ['张三', '李四', '王五'],
'年龄': [25, 30, 35],
'城市': ['北京', '上海', '广州']
}
df = pd.DataFrame(data)
# 2. 导出到 Excel
# index=False 表示不保存行索引
df.to_excel('output.xlsx', index=False, sheet_name='用户数据')
print("文件已成功导出!")
核心参数说明
excel_writer: 文件路径或 ExcelWriter 对象。sheet_name: 工作表名称,默认为 ‘Sheet1’。index: 是否将行索引写入 Excel,通常设置为False。columns: 指定导出特定的列。
使用 Openpyxl(适用于修改现有文件或精细控制)
如果你需要打开一个已有的 Excel 文件并修改其中的某个单元格,或者需要设置单元格样式,openpyxl 是最佳选择。
安装依赖
pip install openpyxl
代码示例
from openpyxl import Workbook, load_workbook
# 创建新工作簿
wb = Workbook()
ws = wb.active= "成绩单"
# 写入数据
ws['A1'] = "姓名"
ws['B1'] = "分数"
ws.append(["小明", 95])
ws.append(["小红", 98])
# 保存文件
wb.save("scores.xlsx")
# --- 修改现有文件 ---
wb_existing = load_workbook("scores.xlsx")
sheet = wb_existing.active
sheet['C1'] = "评级"
sheet['C2'] = "优秀"
wb_existing.save("scores_updated.xlsx")
使用 XlsxWriter(适用于复杂格式和图表)
如果你需要创建包含复杂格式、条件格式、图表
的专业报告,XlsxWriter 性能最强且功能最全。
安装依赖
pip install XlsxWriter
代码示例
import pandas as pd
# 创建一个 Pandas Excel writer,使用 xlsxwriter 作为引擎
writer = pd.ExcelWriter('report.xlsx', engine='xlsxwriter')
df = pd.DataFrame({'数据': [10, 20, 30, 40]})
df.to_excel(writer, sheet_name='Sheet1', index=False)
# 获取 xlsxwriter 的 workbook 和 worksheet 对象
workbook = writer.book
worksheet = writer.sheets['Sheet1']
# 定义一种格式:红色加粗
header_format = workbook.add_format({'bold': True, 'font_color': 'red'})
# 应用格式到特定单元格
worksheet.write('A1', '指标', header_format)
writer.close()
核心方案对比总结
| 工具 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| Pandas | 快速导出数据表 | 代码极简,处理大数据集高效 | 无法进行精细的单元格样式控制 |
| Openpyxl | 读写/修改现有文件 | 支持读写,能操作单元格属性 | 处理超大规模数据时速度较慢 |
| XlsxWriter | 生成专业格式报告 | 支持图表、条件格式,写入速度快 | 不支持读取现有文件(只能写) |
常见问题排查
- 报错
ModuleNotFoundError: No module named 'openpyxl': 请运行pip install openpyxl。 - 文件被占用: Excel 文件已在电脑中打开,Python 运行
save()或to_excel()时会报错PermissionError,请先关闭 Excel 文件。 - 中文乱码: 现代的
.xlsx格式通常不存在乱码问题,但如果导出.csv,请在to_csv中指定encoding='utf-8-sig'。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/491782.html



