最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python輕松實現(xiàn)將數(shù)據(jù)庫數(shù)據(jù)一鍵導出到Excel

 更新時間:2026年03月31日 08:18:16   作者:咕白m625  
在日常工作中,我們經(jīng)常需要將數(shù)據(jù)庫中的數(shù)據(jù)導出為 Excel 文件,以便進行數(shù)據(jù)分析或業(yè)務匯報,本文將介紹如何僅使用 Python 內(nèi)置庫 + 免費 Excel 處理庫,實現(xiàn)將數(shù)據(jù)庫所有表批量導出到一個 Excel 文件,每個表對應一個獨立工作表

最近需要將 SQLite 數(shù)據(jù)庫里的所有表都導出成 Excel 表格,本文記錄一下如何只用 Python 內(nèi)置庫 + 免費 Excel 處理庫,實現(xiàn)將數(shù)據(jù)庫所有表批量導出到一個 Excel 文件(每個表對應一個獨立工作表)。

一、環(huán)境準備

Python 環(huán)境:3.6及以上版本均可

依賴庫安裝

sqlite3:Python 自帶的 SQLite 數(shù)據(jù)庫操作庫,無需安裝

Free Spire.XLS:用于創(chuàng)建、寫入和格式化 Excel 文件的免費版庫(注意限制)

打開命令行執(zhí)行安裝命令:

pip install Spire.Xls.Free

二、核心實現(xiàn)思路

通過以下 5 個步驟就能完成數(shù)據(jù)導出流程:

  • 連接本地 SQLite 數(shù)據(jù)庫
  • 獲取數(shù)據(jù)庫中所有表的名稱
  • 創(chuàng)建空白 Excel 工作簿
  • 遍歷每一張數(shù)據(jù)庫表:讀取表頭+數(shù)據(jù) → 新建工作表寫入 → 簡單格式化
  • 保存 Excel 文件,關閉數(shù)據(jù)庫連接

三、完整可運行代碼

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

# ---------------------- 1. 連接SQLite數(shù)據(jù)庫 ----------------------
# 替換為你的數(shù)據(jù)庫文件路徑(相對路徑/絕對路徑均可)
conn = sqlite3.connect("Sales Data.db")
cursor = conn.cursor()

# ---------------------- 2. 獲取數(shù)據(jù)庫中所有表名 ----------------------
cursor.execute("SELECT name FROM sqlite_master WHERE type='table';")
# 提取所有表名,生成列表
tableNames = [name[0] for name in cursor.fetchall()]

# ---------------------- 3. 創(chuàng)建空白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 獲取當前表的所有數(shù)據(jù)
    cursor.execute(f"SELECT * FROM {tableName}")
    rows = cursor.fetchall()
    
    # 4.3 新建工作表,名稱=數(shù)據(jù)庫表名
    sheet = workbook.Worksheets.Add(tableName)
    
    # 4.4 寫入表頭(第一行)
    for i in range(len(columnNames)):
        sheet.Range[1, i + 1].Value = columnNames[i]
    
    # 4.5 寫入表數(shù)據(jù)(修復原代碼bug:從第0行開始遍歷,避免丟失第一條數(shù)據(jù))
    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()
# 關閉數(shù)據(jù)庫連接
conn.close()

print("數(shù)據(jù)導出完成!")

雖然示例用的是 SQLite,但換 MySQL、PostgreSQL 也不難,只要把 sqlite3 那塊換成對應的連接方式就行,后面的處理邏輯完全一樣。

四、幾個關鍵點解析

表名獲?。?/strong>sqlite_master 是 SQLite 的系統(tǒng)表,存著所有表的結構信息。這里篩選 type='table' 拿到的是用戶表,系統(tǒng)表會被過濾掉。

列名獲?。?/strong>PRAGMA table_info 這個命令挺有用的,返回每個列的詳細信息。取第二個字段就是列名。

數(shù)據(jù)寫入的坐標問題:sheet.Range[行, 列] 是從1開始的,不是0。所以表頭寫在第一行 Range[1, i+1],數(shù)據(jù)從第二行開始 Range[j+1, k+1]。

格式化的小細節(jié):AllocatedRange 指的是已經(jīng)被寫入數(shù)據(jù)的區(qū)域,不用自己算邊界,省事。AutoFitRowsAutoFitColumns 會自動調整行高列寬,不用手動調了。

最后

這是一個非常輕量化的 Python 數(shù)據(jù)導出方案,沒有復雜的框架和配置,核心代碼不到50行,就能實現(xiàn)數(shù)據(jù)庫多表一鍵導出Excel。無論是處理銷售數(shù)據(jù)、業(yè)務報表還是測試數(shù)據(jù),都能直接復用,大幅提升日常數(shù)據(jù)處理效率。

到此這篇關于Python輕松實現(xiàn)將數(shù)據(jù)庫數(shù)據(jù)一鍵導出到Excel的文章就介紹到這了,更多相關Python數(shù)據(jù)庫數(shù)據(jù)導出到Excel內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python按照list中字典的某key去重的示例代碼

    python按照list中字典的某key去重的示例代碼

    這篇文章主要介紹了python按照list中字典的某key去重的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • Python機器學習應用之基于LightGBM的分類預測篇解讀

    Python機器學習應用之基于LightGBM的分類預測篇解讀

    這篇文章我們繼續(xù)學習一下GBDT模型的另一個進化版本:LightGBM,LigthGBM是boosting集合模型中的新進成員,由微軟提供,它和XGBoost一樣是對GBDT的高效實現(xiàn),原理上它和GBDT及XGBoost類似,都采用損失函數(shù)的負梯度作為當前決策樹的殘差近似值,去擬合新的決策樹
    2022-01-01
  • Python pydotplus安裝及可視化圖形創(chuàng)建教程

    Python pydotplus安裝及可視化圖形創(chuàng)建教程

    這篇文章主要為大家介紹了Python pydotplus安裝及可視化圖形創(chuàng)建教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • Python使用大語言模型進行圖表可視化

    Python使用大語言模型進行圖表可視化

    Python使用matplotlib進行可視化一直有2個問題,一是代碼繁瑣,二是默認模板比較丑,在大模型時代,這個問題有了另一種解法,下面我們就來看看如何使用大語言模型進行圖表可視化吧
    2025-04-04
  • python使用numpy讀取、保存txt數(shù)據(jù)的實例

    python使用numpy讀取、保存txt數(shù)據(jù)的實例

    今天小編就為大家分享一篇python使用numpy讀取、保存txt數(shù)據(jù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python import用法以及與from...import的區(qū)別

    Python import用法以及與from...import的區(qū)別

    這篇文章主要介紹了Python import用法以及與from...import的區(qū)別,本文簡潔明了,很容易看懂,需要的朋友可以參考下
    2015-05-05
  • PyCharm下載和安裝詳細步驟

    PyCharm下載和安裝詳細步驟

    這篇文章主要介紹了PyCharm下載和安裝詳細步驟,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • 簡化Python的Django框架代碼的一些示例

    簡化Python的Django框架代碼的一些示例

    這篇文章主要介紹了簡化Python的Django框架代碼的一些示例,實際上文中只是抽取了一些Django中最基本的功能用于簡化入門者的上手復雜度,下,需要的朋友可以參考下
    2015-04-04
  • Python實現(xiàn)根據(jù)Excel表格某一列內(nèi)容與數(shù)據(jù)庫進行匹配

    Python實現(xiàn)根據(jù)Excel表格某一列內(nèi)容與數(shù)據(jù)庫進行匹配

    這篇文章主要為大家詳細介紹了Python如何使用pandas庫和Brightway2庫實現(xiàn)根據(jù)Excel表格某一列內(nèi)容與數(shù)據(jù)庫進行匹配,需要的可以參考下
    2025-02-02
  • 卸載PyCharm Professional全過程

    卸載PyCharm Professional全過程

    本文詳細介紹了在Windows、Mac和Linux系統(tǒng)中卸載PyCharm Professional的方法,包括如何通過系統(tǒng)設置、自帶工具、手動刪除文件夾等方式卸載,還提供了卸載時需要注意的事項,如備份重要文件、取消自動登錄設置、刪除殘留文件等
    2026-05-05

最新評論

恭城| 瑞丽市| 湘潭市| 邓州市| 讷河市| 阿图什市| 杨浦区| 德江县| 芜湖县| 阿克陶县| 马鞍山市| 南昌县| 平塘县| 梁河县| 革吉县| 林西县| 尚志市| 顺平县| 团风县| 南京市| 浮山县| 鹿泉市| 方山县| 友谊县| 济源市| 泽库县| 丹巴县| 大埔县| 长沙县| 曲周县| 大理市| 乌兰浩特市| 孟津县| 富裕县| 水富县| 黄平县| 富阳市| 高邑县| 余江县| 台山市| 揭西县|