在生產環境中測試,無水印。
在任何需要的地方都能運行。
獲得 30 天的全功能產品。
在幾分鐘內上手運行。
試用產品期間完全訪問我們的支援工程團隊
在當今以數據為導向的世界中,高效處理和管理數據對於任何組織或個人來說都是至關重要的任務。 Python 拥有豐富的程式庫生態系,提供強大的資料操作和管理工具,如 import pandas library。 一個常見的情況是需要從Excel試算表中提取或匯入資料,並將資料儲存或插入到資料庫中,以便進一步分析或與其他系統整合。 在本教程中,我們將探討如何創建一個自動化該過程的 Python 腳本,允許您無縫地從 Excel 表單檔案中讀取數據並將其插入數據庫。 在本教程結束時,您將準備好有效地處理資料遷移任務。 讓我們開始吧!
首先安裝IronXL函式庫。
使用 IronXL 將您的 Excel 檔案載入記憶體。
載入您希望處理的特定試算表。
選擇您打算匯入的精確數據範圍。
使用 Python 與任何資料庫建立連接,例如 SQLite 或 MySQL 連接資料庫。
在您的 SQLite 資料庫中建立一個新表來容納匯入的數據。
將選定的行從 Excel 文件插入到新創建的 SQLite 資料表中。
從已創建的SQLite表中檢索並選擇數據,以進行進一步的分析或處理。
在本教程中,我們將使用 IronXL,這是一個以有效處理 Excel 文件而聞名的 Python 庫。 通過將IronXL整合到我們的腳本中,我們確保從Excel試算表中無縫提取數據,並順利插入數據庫以進行進一步的分析和處理。
IronXL 是由 Iron Software 開發的 Python 庫,提供強大的功能,可在 Python 應用程式中直接讀取、生成和編輯 Excel 文件。 值得注意的是,IronXL 的突出之处在於其不依賴於安裝 Microsoft Excel,從而簡化了在不同環境中的部署。 使用IronXL,開發人員可以受益於:
跨平台支持:在 Windows、macOS、Linux、Docker、Azure 和 AWS 平台上享受無縫操作,確保適應各種開發環境。
資料匯入與匯出:輕鬆處理從 XLS、XLSX、CSV 和 TSV 檔案的資料匯入,並具有將工作表匯出至這些格式的彈性,甚至可以匯出為 JSON,以增強互操作性。
加密功能:透過IronXL的加密功能確保數據安全,允許使用密碼保護XLSX、XLSM和XLTX檔案。
公式與重新計算: 輕鬆處理 Excel 公式,每次編輯工作表時會自動重新計算,確保數據操作的準確性和可靠性。
儲存格樣式: 通過調整字體樣式、大小、背景樣式、邊框和對齊方式來自訂個別儲存格的外觀,增強您的 Excel 文件的視覺表現。
廣泛的文件格式範圍:IronXL 支援多種格式,包括 XLS、XLSX、XLST、XLSM、CSV 和 TSV,讓開發者能夠輕鬆高效地處理多種情境下的數據。
現在,讓我們開始安裝 IronXL。
第一步是安裝 IronXL 庫。 在命令提示字元中執行以下指令以安裝IronXL。
pip install IronXL
下一步是載入 Excel 檔案。這份教學將使用下面的 Excel 檔案。
以下程式碼將在記憶體中載入現有的 Excel 文件。
from ironxl import * # Supported for XLSX, XLS, XLSM, XLTX, CSV, and TSV
License.LicenseKey = "IRONSUITE.ABC.XYZ.COM.15796-DEPLOYMENT.TRIAL-5X63V4.TRIAL.EXPIRES.27.MAY.2024";
workbook = WorkBook.Load("sample_excel.xlsx")
以上的 Python 代碼片段演示了使用 IronXL 庫載入名為「sample_excel.xlsx」的 Excel 工作簿。 首先,從 IronXL 匯入必要的 Python 模組。 然後,指定授權密鑰以驗證庫的使用。 您可以從IronXL 網站獲取您的免費授權金鑰。 最後,使用 Load 方法將指定的 Excel 工作簿打開並加載到記憶體中。 這使得可以通過程式設計語言對其內容進行後續的操作,例如讀取數據、修改儲存格值或應用格式化。
要使用IronXL選擇Excel工作簿中的工作表,您可以指定工作表索引或名稱。
worksheet = workbook.WorkSheets[0]
此行選擇已載入 Excel 工作簿中的第一個工作表,並將其賦值給變數「worksheet」,以便能夠在該工作簿中的特定工作表上執行後續操作。 這將從 Excel 工作表讀取 Excel 數據到工作表變數。
在本教程中,我們使用 SQLite 資料庫而不是 MySQL 資料庫伺服器。 要開始資料庫操作,我們首先需要建立與資料庫的連接。
import sqlite3
# Connect to SQLite database (or create it if it doesn't exist)
conn = sqlite3.connect('data.db')
上述行建立了與名為 'data.db' 的 SQLite 資料庫的連接。 如果指定的資料庫不存在,將會自動建立。 此連線允許隨後與 SQLite 資料庫的互動,例如執行查詢和進行資料操作。
下一步是在資料庫中建立一個資料表,此資料表將用於從 Excel 檔案匯入數據。要在 SQLite 資料庫中建立資料表,您可以使用連線對象執行 SQL 語句。
cursor = conn.cursor() // database objects
cursor.execute('''CREATE TABLE IF NOT EXISTS customer ( id Number,
FirstName TEXT,
LastName TEXT,
Gender TEXT,
Country TEXT,
Age Number
)''')
上面的程式碼片段初始化了一個游標物件,以在 SQLite 資料庫連線中執行 SQL 命令。 它創建了一個名為「customer」的表,包含「id」、「FirstName」、「LastName」、「Gender」、「Country」和「Age」欄位。 如果表尚不存在,則會創建該表,並遵循指定的列數據類型。
現在,我們將把資料插入新創建的表格中。 我們將匯入一個 Excel 文件,並將其數據插入到 SQLite 資料庫中。
for i in range(2, 11):
values_tuple = (
worksheet[f"A{i}"].StringValue,
worksheet[f"B{i}"].StringValue,
worksheet[f"C{i}"].StringValue,
worksheet[f"D{i}"].StringValue,
worksheet[f"E{i}"].StringValue,
worksheet[f"F{i}"].StringValue
)
cursor.execute("INSERT INTO customer VALUES (?, ?, ?, ?, ?, ?)", values_tuple)
conn.commit()
上述代碼迭代 Excel 工作表中的第 2 到第 10 行,提取每行中的 A 到 F 列的值。 這些值被存儲在一個元組中,代表要插入到「customer」表中的數據。 接著,游標執行 SQL INSERT 命令,將值組合併到表中。 此過程針對每一行重複執行,有效地將數據從 Excel 文件導入到 SQLite 資料庫中。 最後,conn.commit() 提交交易,確保變更已保存並持續保存在資料庫中。
要驗證數據是否正確插入,您可以使用 SELECT 查詢從 SQLite 資料庫中的 'customer' 表讀取數據。 例如:
cursor.execute("SELECT * FROM customer")
# Fetch all rows from the result set
rows = cursor.fetchall()
# Print the rows
for row in rows:
print(row)
conn.close()
上述程式碼在 SQLite 資料庫中的 'customer' 表格執行一個 SELECT 查詢,檢索所有行。 使用 fetchall() 方法獲取的行被存儲在 'rows' 變數中。 接著,每一行將被迭代列印,顯示插入到 'customer' 表中的數據。 最後,通過使用 close() 方法關閉資料庫連接以釋放資源。
完整的代碼如下:
import sqlite3
from ironxl import * # Supported for XLSX, XLS, XLSM, XLTX, CSV, and TSV
License.LicenseKey = "IRONSUITE.ABC.XYZ.COM.15796-DEPLOYMENT.TRIAL-5X63V4.TRIAL.EXPIRES.27.MAY.2024";
workbook = WorkBook.Load("sample_excel.xlsx")
# Select worksheet at index 0
worksheet = workbook.WorkSheets[0]
# Connect to SQLite database (or create it if it doesn't exist)
conn = sqlite3.connect('data.db')
cursor = conn.cursor()
cursor.execute('''CREATE TABLE IF NOT EXISTS customer ( id Number,
FirstName TEXT,
LastName TEXT,
Gender TEXT,
Country TEXT,
Age Number
)''')
cursor.execute("DELETE FROM customer")
for i in range(2, 11):
values_tuple = (
worksheet[f"A{i}"].StringValue,
worksheet[f"B{i}"].StringValue,
worksheet[f"C{i}"].StringValue,
worksheet[f"D{i}"].StringValue,
worksheet[f"E{i}"].StringValue,
worksheet[f"F{i}"].StringValue
)
cursor.execute("INSERT INTO customer VALUES (?, ?, ?, ?, ?, ?)", values_tuple)
conn.commit()
cursor.execute("SELECT * FROM customer")
# Fetch all rows from the result set
rows = cursor.fetchall()
# Print the rows
for row in rows:
print(row)
conn.close()
總結來說,本教程展示了一種自動化的方法來讀取數據,釋放數據管理工作的全部潛力。 利用Python與IronXL的強大力量來優化資料處理工作流程,並充滿信心地推動您的專案向前邁進。