news 2026/6/30 2:45:22

环境准备1. Python 环境

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
环境准备1. Python 环境

安装依赖库

  • sqlite3:Python 标准库,无需额外安装
  • Free Spire.XLS:免费的 Excel 处理库,支持创建、写入和格式化 Excel 文件

安装命令:

pip install Spire.Xls.Free

二、实现思路

整个导出流程可以拆解为以下 5 个步骤:

  1. 连接 SQLite 数据库
  2. 获取数据库中所有用户表的名称
  3. 创建空白 Excel 工作簿
  4. 遍历每一张表:
    • 读取表结构(列名)与数据
    • 新建工作表(以表名命名)
    • 写入表头与数据
    • 自动调整行高与列宽
  5. 保存 Excel 文件,关闭数据库连接

三、完整代码

from spire.xls import * from spire.xls.common import * import sqlite3 # ---------------------- 1. 连接数据库 ---------------------- # 请将路径替换为你的数据库文件路径 conn = sqlite3.connect("Sales Data.db") cursor = conn.cursor() # ---------------------- 2. 获取所有用户表名 ---------------------- cursor.execute("SELECT name FROM sqlite_master WHERE type='table';") table_names = [name[0] for name in cursor.fetchall()] # ---------------------- 3. 创建 Excel 工作簿 ---------------------- workbook = Workbook() workbook.Worksheets.Clear() # 清空默认生成的工作表 # ---------------------- 4. 逐表写入数据 ---------------------- for table_name in table_names: # 4.1 获取列名(表头) cursor.execute(f"PRAGMA table_info('{table_name}')") columns_info = cursor.fetchall() column_names = [info[1] for info in columns_info] # 4.2 获取表数据 cursor.execute(f"SELECT * FROM {table_name}") rows = cursor.fetchall() # 4.3 新建工作表(以表名命名) sheet = workbook.Worksheets.Add(table_name) # 4.4 写入表头 for i, col_name in enumerate(column_names): sheet.Range[1, i + 1].Value = col_name # 4.5 写入数据行 for row_idx, row_data in enumerate(rows): for col_idx, cell_value in enumerate(row_data): sheet.Range[row_idx + 2, col_idx + 1].Value = cell_value # 4.6 自动调整行高和列宽 sheet.AllocatedRange.AutoFitRows() sheet.AllocatedRange.AutoFitColumns() # ---------------------- 5. 保存并清理资源 ---------------------- workbook.SaveToFile("DataBaseToExcel.xlsx", FileFormat.Version2016) workbook.Dispose() conn.close() print("数据导出完成!")

本文示例使用 SQLite,若需要从 MySQL、PostgreSQL 等数据库导出,只需替换数据库连接部分,后续处理逻辑完全通用。

四、关键点说明

1. 获取表名

SQLite 的系统表sqlite_master存储了所有表的结构信息。通过type='table'过滤,可以只获取用户表,自动排除系统表。

2. 获取列名

PRAGMA table_info是 SQLite 提供的便捷命令,返回表的列信息。结果中第二个字段即为列名,适合直接作为 Excel 表头。

3. 行列索引注意事项

sheet.Range[行, 列]的索引从1开始,而非 0。因此:

  • 表头写入第 1 行
  • 数据从第 2 行开始写入,对应索引row_idx + 2

4. 自动格式化

AllocatedRange会自动识别已被数据填充的区域,无需手动计算边界。
AutoFitRows()AutoFitColumns()可根据内容自动调整行高与列宽,使生成的表格更加美观。

五、总结

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/30 2:44:43

【单片机毕业设计】基于 STM32 的老人健康运动监测装置设计,基于 STM32 的人体体征与跌倒报警设备开发(013301)

文章目录20 个相关毕业设计备选题目项目研究背景摘要总体方案核心功能一、基础硬件数据处理功能二、数据采集功能(核心采集模块)三、人机交互功能四、安全预警报警功能(核心预警模块)技术路线项目演示关于我们项目案例源码获取博主…

作者头像 李华
网站建设 2026/6/30 2:43:24

SpiderFoot开源情报工具:自动化OSINT侦察框架部署与实战指南

这次我们来看一个开源情报收集工具——SpiderFoot。如果你在做安全测试、渗透评估或者需要自动化收集目标信息,这个项目值得关注。它不是那种需要高显存的AI模型,而是一个基于Python的侦察框架,能自动从上百个公开数据源收集信息,…

作者头像 李华
网站建设 2026/6/30 2:42:50

ATCODER ABC 450 C

因为想不到或者不知道这道题的算法是什么,我想枚举模拟,但是在枚举模拟的过程中,我发现,我模拟从一个串的开始到串的末尾,这个过程很难模拟出来,所以暴力做法也写不出来,最后,看官方题解以及问ai,才知道这道题要用BFS(广度优先搜索)BFS:为什么要用BFS这道题是一个连通块问题,等…

作者头像 李华
网站建设 2026/6/30 2:40:05

财报分析AI工具各产品信息处理适配场景梳理

财报分析AI工具各产品信息处理适配场景梳理 一、普通投资者整理财报与研究记录时普遍存在的信息管理痛点 大多数自主整理财报、研读研报、日常复盘记录的个人使用者,都会长期面临信息碎片化带来的效率损耗。行业资讯、上市公司财报PDF、券商深度研报、每日行情观察…

作者头像 李华
网站建设 2026/6/30 2:38:17

Windows系统文件AddressParser.dll丢失找不到问题解决

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

作者头像 李华