Python使用xlsxwriter构建Excel报表与数据导出指南
本文详解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自动化生成表格及数据库对接的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









