Python轻松实现将数据库数据一键导出到Excel

 更新时间:2026年03月31日 08:18:16   作者:咕白m625  
在日常工作中,我们经常需要将数据库中的数据导出为 Excel 文件,以便进行数据分析或业务汇报,本文将介绍如何仅使用 Python 内置库 + 免费 Excel 处理库,实现将数据库所有表批量导出到一个 Excel 文件,每个表对应一个独立工作表

最近需要将 SQLite 数据库里的所有表都导出成 Excel 表格,本文记录一下如何只用 Python 内置库 + 免费 Excel 处理库,实现将数据库所有表批量导出到一个 Excel 文件(每个表对应一个独立工作表)。

一、环境准备

Python 环境:3.6及以上版本均可

依赖库安装

sqlite3:Python 自带的 SQLite 数据库操作库,无需安装

Free Spire.XLS:用于创建、写入和格式化 Excel 文件的免费版库(注意限制)

打开命令行执行安装命令:

pip install Spire.Xls.Free

二、核心实现思路

通过以下 5 个步骤就能完成数据导出流程:

  • 连接本地 SQLite 数据库
  • 获取数据库中所有表的名称
  • 创建空白 Excel 工作簿
  • 遍历每一张数据库表:读取表头+数据 → 新建工作表写入 → 简单格式化
  • 保存 Excel 文件,关闭数据库连接

三、完整可运行代码

from spire.xls import *
from spire.xls.common import *
import sqlite3

# ---------------------- 1. 连接SQLite数据库 ----------------------
# 替换为你的数据库文件路径(相对路径/绝对路径均可)
conn = sqlite3.connect("Sales Data.db")
cursor = conn.cursor()

# ---------------------- 2. 获取数据库中所有表名 ----------------------
cursor.execute("SELECT name FROM sqlite_master WHERE type='table';")
# 提取所有表名,生成列表
tableNames = [name[0] for name in cursor.fetchall()]

# ---------------------- 3. 创建空白Excel工作簿 ----------------------
workbook = Workbook()
# 清空默认工作表,避免多余表格
workbook.Worksheets.Clear()

# ---------------------- 4. 遍历所有表,写入Excel ----------------------
for tableName in tableNames:
    # 4.1 获取当前表的列名(Excel表头)
    cursor.execute(f"PRAGMA table_info('{tableName}')")
    columnsInfo = cursor.fetchall()
    columnNames = [columnInfo[1] for columnInfo in columnsInfo]

    # 4.2 获取当前表的所有数据
    cursor.execute(f"SELECT * FROM {tableName}")
    rows = cursor.fetchall()
    
    # 4.3 新建工作表,名称=数据库表名
    sheet = workbook.Worksheets.Add(tableName)
    
    # 4.4 写入表头(第一行)
    for i in range(len(columnNames)):
        sheet.Range[1, i + 1].Value = columnNames[i]
    
    # 4.5 写入表数据(修复原代码bug:从第0行开始遍历,避免丢失第一条数据)
    for j in range(len(rows)):
        row_data = rows[j]
        for k in range(len(row_data)):
            sheet.Range[j + 2, k + 1].Value = row_data[k]
    
    # 4.6 表格格式化:自适应行列宽度 (可选)
    sheet.AllocatedRange.AutoFitRows()    # 自适应行高
    sheet.AllocatedRange.AutoFitColumns() # 自适应列宽

# ---------------------- 5. 保存文件并释放资源 ----------------------
# 保存Excel到指定路径
workbook.SaveToFile("DataBaseToExcel.xlsx", FileFormat.Version2016)
# 释放Excel对象资源
workbook.Dispose()
# 关闭数据库连接
conn.close()

print("数据导出完成!")

虽然示例用的是 SQLite,但换 MySQL、PostgreSQL 也不难,只要把 sqlite3 那块换成对应的连接方式就行,后面的处理逻辑完全一样。

四、几个关键点解析

表名获取:sqlite_master 是 SQLite 的系统表,存着所有表的结构信息。这里筛选 type='table' 拿到的是用户表,系统表会被过滤掉。

列名获取:PRAGMA table_info 这个命令挺有用的,返回每个列的详细信息。取第二个字段就是列名。

数据写入的坐标问题:sheet.Range[行, 列] 是从1开始的,不是0。所以表头写在第一行 Range[1, i+1],数据从第二行开始 Range[j+1, k+1]

格式化的小细节:AllocatedRange 指的是已经被写入数据的区域,不用自己算边界,省事。AutoFitRowsAutoFitColumns 会自动调整行高列宽,不用手动调了。

最后

这是一个非常轻量化的 Python 数据导出方案,没有复杂的框架和配置,核心代码不到50行,就能实现数据库多表一键导出Excel。无论是处理销售数据、业务报表还是测试数据,都能直接复用,大幅提升日常数据处理效率。

到此这篇关于Python轻松实现将数据库数据一键导出到Excel的文章就介绍到这了,更多相关Python数据库数据导出到Excel内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决python文件双击运行秒退的问题

    解决python文件双击运行秒退的问题

    今天小编就为大家分享一篇解决python文件双击运行秒退的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • python打印带时间的日志实现代码

    python打印带时间的日志实现代码

    python的logging模块提供了标准的日志接口,可以通过它存储各种格式的日志,下面这篇文章主要给大家介绍了关于python打印带时间的日志的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-04-04
  • Python+Pygame制作"长沙版"大富翁

    Python+Pygame制作"长沙版"大富翁

    说到童年爱玩的电脑游戏,最国民的莫过于金山打字通,接着是扫雷、红心大战,而红极一时的单机游戏当属《大富翁》。本文将通过Python的Pygame模块制作"长沙版"的大富翁,需要的可以参考一下
    2022-02-02
  • Python中read,readline和readlines的区别案例详解

    Python中read,readline和readlines的区别案例详解

    这篇文章主要介绍了Python中read,readline和readlines的区别案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • Python分析和处理excel文件数据的详细步骤

    Python分析和处理excel文件数据的详细步骤

    Python 提供了多种工具来分析和处理 Excel 文件数据,最常用的库包括 pandas、openpyxl 和 xlrd,本文将详细介绍如何使用这些工具读取、处理和分析 Excel 文件中的数据,需要的朋友可以参考下
    2025-05-05
  • Python cookbook(数据结构与算法)将多个映射合并为单个映射的方法

    Python cookbook(数据结构与算法)将多个映射合并为单个映射的方法

    这篇文章主要介绍了Python cookbook(数据结构与算法)将多个映射合并为单个映射的方法,结合实例形式分析了Python字典映射合并操作相关实现技巧,需要的朋友可以参考下
    2018-04-04
  • python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现

    python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现

    今天小编就为大家分享一篇python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Python进阶之全面解读高级特性之切片

    Python进阶之全面解读高级特性之切片

    切片的作用就是截取序列对象,然而,对于非序列对象,我们是否有办法做到切片操作呢?在使用切片的过程中,有什么要点值得重视,又有什么底层原理值得关注呢?本文将主要跟大家一起来探讨这些内容
    2019-02-02
  • Python结合DeepSeek API实现PDF转Word的方案

    Python结合DeepSeek API实现PDF转Word的方案

    随着信息化时代的不断推进,PDF和Word文件格式已经成为了日常办公中最常见的文档格式,在许多工作场景中,我们需要将PDF文件转换成Word格式,本文将介绍如何结合DeepSeek API与Python,快速实现一个PDF转Word的工具,需要的朋友可以参考下
    2025-02-02
  • 基于Python开发一个班级互动小程序

    基于Python开发一个班级互动小程序

    这篇文章主要为大家详细介绍了一个基于Python和Tkinter开发的班级互动小程序,通过点击按钮随机生成趣味惩罚任务,下面我们就来看看具体实现代码吧
    2025-09-09

最新评论