Python使用xlsxwriter构建Excel报表与数据导出指南

阿橙
阿橙
发布时间:2026-10-11| 3人浏览过
原创

本文详解Python中xlsxwriter库的基础用法与进阶场景,涵盖新建工作簿、自定义单元格样式、插入图表以及结合pymysql将MySQL数据库记录高效导出为xlsx文件的完整流程。提供关键API参数说明、对象生命周期管理规范及生产环境注意事项。

创建工作簿并写入基础数据

xlsxwriter支持直接生成符合Office规范的xlsx文件。通过实例化Workbook指定输出路径后,可使用add_worksheet创建独立工作表,并利用write方法按行列坐标填入文本或数值。操作完成后调用workbook.close()触发实际文件落盘。

import xlsxwriter

workbook = xlsxwriter.Workbook('report_data.xlsx')
worksheet = workbook.add_worksheet("Sheet1")

worksheet.write('A1', '姓名')
worksheet.write('B1', '年龄')
worksheet.write('A2', '张三')
worksheet.write('B2', 25)
worksheet.write('A3', '李四')
worksheet.write('B3', 30)

workbook.close()

配置单元格格式与工作表布局

通过add_format可精细化控制字体粗细、颜色、边框与数字显示格式。列宽与行高可通过set_column和set_row批量调整,适用于需要统一排版规范的报表场景。

import xlsxwriter

workbook = xlsxwriter.Workbook('styled_report.xlsx')
worksheet = workbook.add_worksheet()

bold_format = workbook.add_format({'bold': True})
worksheet.write('A1', '标题', bold_format)
worksheet.write('A2', '数据1')
worksheet.write('B2', 100)

# 设置A至B列宽度为15,第1行(索引0)高度为20
worksheet.set_column('A:B', 15)
worksheet.set_row(0, 20)

workbook.close()

在工作表中插入动态图表

使用add_chart创建图表对象,绑定对应数据类型(如column、pie、line)。系列数据通过引用Excel公式语法指向单元格范围,最后嵌入目标坐标即可渲染可视化元素。

import xlsxwriter

workbook = xlsxwriter.Workbook('chart_report.xlsx')
worksheet = workbook.add_worksheet()

data = [10, 20, 30, 40, 50]
worksheet.write_column('A1', data)

chart = workbook.add_chart({'type': 'column'})
chart.add_series({
    'values': '=Sheet1!$A$1:$A$5',
    'name': '数据',
})

worksheet.insert_chart('C1', chart)
workbook.close()

将MySQL查询结果完整导出至Excel

第1步:建立安全连接并准备游标

目的:建立与关系型数据库的网络通道。 入口:pymysql.connect 动作:传入主机地址、认证凭据与目标数据库名。生产环境强烈建议使用环境变量注入密钥,避免明文提交。 参数:host, user, password, database 完成状态:无异常抛出,获得可用的connection对象。

第2步:提取元数据并写入表头

目的:获取数据库表结构定义,形成Excel首行标识。 入口:cursor.description 动作:执行SELECT语句后解析字段描述元组,提取索引0位置的列名,遍历写入第0行。 参数:query SQL字符串 完成状态:Excel首行呈现与源表一致的字段名称序列。

第3步:遍历结果集并处理数据类型

目的:将查询返回的记录流转换为Excel可读内容,修复时间类型兼容问题。 入口:cursor.fetchall() 与 worksheet.write 动作:获取全部元组列表后双重循环映射行列。检测到Python原生datetime.datetime对象时,调用strftime转为标准格式字符串,防止单元格错误值。 参数:行/列索引变量,原始数据值 完成状态:从索引1开始的数据区域完整填充,日期列显示为可读文本。

第4步:释放资源与关闭文件

风险提示:数据导出涉及磁盘写入与网络会话占用,必须严格遵循逆序关闭原则,否则可能导致进程锁死、内存泄漏或文件损坏。 动作:依次调用cursor.close() → connection.close() → workbook.close()。 完成状态:控制台无报错残留,指定路径下生成可用xlsx文件,数据库会话已清理。

常见问题与注意事项

  • 中文表名或数据库名可能引发字符集冲突,请在创建连接时显式声明charset='utf8mb4'。
  • xlsxwriter为只写引擎,不支持修改已存在的xlsx文件结构,仅能从头生成新文件。
  • 大批量数据写入时建议预先计算行列边界,必要时启用write_string或write_number强制类型约束以提升渲染稳定性。

总结

以上就是Python使用xlsxwriter构建Excel报表与数据导出指南的详细内容,更多关于Python自动化生成表格及数据库对接的资料请关注本站其它相关文章!

相关标签:

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

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 算法库。