Python案例如何导出Excel数据?

wen python案例 22

Python案例如何导出Excel数据?从入门到实战的完整指南

目录导读


为什么用Python导出Excel数据?

在日常数据处理与自动化办公中,Python导出Excel数据是高频需求,无论是数据清洗后的结果、爬虫采集的数据,还是数据库查询记录,借助Python的pandasopenpyxl库,你可以在几行代码内生成标准.xlsx文件。

Python案例如何导出Excel数据?

核心优势

  • 自动化:定时导出任务无需人工操作
  • 灵活性:支持合并单元格、条件格式、图表等高级功能
  • 兼容性:生成的Excel文件可在Office、WPS、Google Sheets中打开

核心库与安装指南

必备库

库名称 作用 安装命令
pandas 数据处理与便捷导出 pip install pandas
openpyxl 底层Excel读写引擎 pip install openpyxl

验证安装

import pandas as pd
import openpyxl
print("环境准备完成")

从列表导出简单Excel表格

场景

你有一份学生成绩数据,需要导出为Excel。

代码实现

import pandas as pd
# 准备数据
data = {
    '姓名': ['张三', '李四', '王五'],
    '数学': [90, 85, 78],
    '语文': [88, 92, 81]
}
df = pd.DataFrame(data)
# 导出Excel
df.to_excel('成绩表.xlsx', index=False)
print("导出成功:成绩表.xlsx")

关键参数说明

  • index=False:不写入行索引号
  • 默认Sheet名为“Sheet1”,可通过sheet_name='成绩'修改

从数据库查询结果导出Excel

场景

从MySQL数据库查询订单数据并导出。

完整代码

import pandas as pd
from sqlalchemy import create_engine
# 数据库连接(请替换为你的实际配置)
engine = create_engine('mysql+pymysql://root:password@localhost:3306/shop')
# SQL查询
sql = "SELECT order_id, amount, status FROM orders WHERE status='已完成'"
# 读取数据+导出
df = pd.read_sql(sql, engine)
df.to_excel('已完成订单.xlsx', index=False)
print(f"成功导出 {len(df)} 条订单记录")

注意:若使用SQLite,连接字符串改为sqlite:///mydb.db即可。


格式化与多Sheet导出

场景

需要生成一份含三个Sheet的报表,并对标题行加粗、列宽自适应。

代码实现

import pandas as pd
from openpyxl import Workbook
from openpyxl.styles import Font
from openpyxl.utils.dataframe import dataframe_to_rows
# 三个数据表
df1 = pd.DataFrame({'产品': ['A', 'B'], '销量': [100, 200]})
df2 = pd.DataFrame({'产品': ['C', 'D'], '销量': [150, 250]})
df3 = pd.DataFrame({'产品': ['E', 'F'], '销量': [300, 350]})
wb = Workbook()
# 逐个添加Sheet
for i, (df, sheet_name) in enumerate(zip(
    [df1, df2, df3], ['一季度', '二季度', '三季度']
)):
    if i == 0:
        ws = wb.active
        ws.title = sheet_name
    else:
        ws = wb.create_sheet(title=sheet_name)
    # 写入数据
    for r in dataframe_to_rows(df, index=False, header=True):
        ws.append(r)
    # 格式化标题行
    for cell in ws[1]:
        cell.font = Font(bold=True, color='0000FF')
    # 调整列宽(简单自适应)
    for col in ws.columns:
        max_length = max(len(str(cell.value)) for cell in col if cell.value)
        ws.column_dimensions[col[0].column_letter].width = max_length + 2
wb.save('季度报表.xlsx')
print("多Sheet格式化报表已生成")

常见错误问答

问:导出后Excel文件打开显示乱码?
答:通常是因为openpyxl引擎默认处理UTF-8,若数据含中文,确保代码文件第一行添加# -*- coding: utf-8 -*-,并设置encoding='utf-8-sig'(如果使用CSV)。“Python导出Excel数据”天然支持中文,无需额外编码。

问:如何将多个DataFrame写入同一个Sheet的不同位置?
答:使用openpyxlload_workbookappend配合。

from openpyxl import load_workbook
wb = load_workbook('模板.xlsx')
ws = wb.active
for row in df.values.tolist():
    ws.append(row)
wb.save('结果.xlsx')

问:导出到Excel后数字被存储为文本?
答:检查pandasdtype,可以在读取时用pd.read_exceldtype参数,或写入时用.astype(float)转换,使用openpyxl直接写入数字类型可避免此类问题。

问:可以导出为CSV而不是Excel吗?
答:可以,使用df.to_csv('data.csv', encoding='utf-8-sig', index=False),CSV文件兼容性更广,但丢失格式与多Sheet能力,如果你的需求是“Python导出Excel数据”,建议坚持使用.xlsx格式。


总结与进阶建议

本文通过三个具体案例,展示了从基础列表到数据库查询、再到高级格式化导出的完整路径,核心流程始终是:准备数据 → 构建DataFrame → to_excel()方法

进阶学习方向

  1. Excel图表插入:使用openpyxl.chart模块
  2. 数据透视表导出:用pandaspivot_table()后转Excel
  3. 定时自动化:结合schedule库实现每日自动导出
  4. 云存储集成:导出后自动上传至阿里云OSS或Google Drive

掌握“Python导出Excel数据”的能力,能让你的数据处理工作流效率提升80%以上,现在打开你的Python环境,动手试试吧!

抱歉,评论功能暂时关闭!