安装依赖库sqlite3Python 标准库无需额外安装Free Spire.XLS免费的 Excel 处理库支持创建、写入和格式化 Excel 文件安装命令pip install Spire.Xls.Free二、实现思路整个导出流程可以拆解为以下 5 个步骤连接 SQLite 数据库获取数据库中所有用户表的名称创建空白 Excel 工作簿遍历每一张表读取表结构列名与数据新建工作表以表名命名写入表头与数据自动调整行高与列宽保存 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 typetable;) 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(fPRAGMA table_info({table_name})) columns_info cursor.fetchall() column_names [info[1] for info in columns_info] # 4.2 获取表数据 cursor.execute(fSELECT * 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存储了所有表的结构信息。通过typetable过滤可以只获取用户表自动排除系统表。2. 获取列名PRAGMA table_info是 SQLite 提供的便捷命令返回表的列信息。结果中第二个字段即为列名适合直接作为 Excel 表头。3. 行列索引注意事项sheet.Range[行, 列]的索引从1开始而非 0。因此表头写入第 1 行数据从第 2 行开始写入对应索引row_idx 24. 自动格式化AllocatedRange会自动识别已被数据填充的区域无需手动计算边界。AutoFitRows()和AutoFitColumns()可根据内容自动调整行高与列宽使生成的表格更加美观。五、总结
环境准备1. Python 环境
安装依赖库sqlite3Python 标准库无需额外安装Free Spire.XLS免费的 Excel 处理库支持创建、写入和格式化 Excel 文件安装命令pip install Spire.Xls.Free二、实现思路整个导出流程可以拆解为以下 5 个步骤连接 SQLite 数据库获取数据库中所有用户表的名称创建空白 Excel 工作簿遍历每一张表读取表结构列名与数据新建工作表以表名命名写入表头与数据自动调整行高与列宽保存 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 typetable;) 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(fPRAGMA table_info({table_name})) columns_info cursor.fetchall() column_names [info[1] for info in columns_info] # 4.2 获取表数据 cursor.execute(fSELECT * 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存储了所有表的结构信息。通过typetable过滤可以只获取用户表自动排除系统表。2. 获取列名PRAGMA table_info是 SQLite 提供的便捷命令返回表的列信息。结果中第二个字段即为列名适合直接作为 Excel 表头。3. 行列索引注意事项sheet.Range[行, 列]的索引从1开始而非 0。因此表头写入第 1 行数据从第 2 行开始写入对应索引row_idx 24. 自动格式化AllocatedRange会自动识别已被数据填充的区域无需手动计算边界。AutoFitRows()和AutoFitColumns()可根据内容自动调整行高与列宽使生成的表格更加美观。五、总结