跳至頁尾內容
使用 IRONXL 進行 PYTHON

如何使用 Python 將 Excel 檔案匯入資料庫表

在當今數據驅動的世界中,高效的數據處理對於任何組織或個人來說都是至關重要的任務。 Python擁有豐富的函式庫生態系統,提供了強大的資料操作和管理工具,例如pandas函式庫。 一個常見的場景是需要從Excel電子表格中提取或匯入數據,並將數據儲存或插入資料庫中,以便進行進一步分析或與其他系統整合。 在本教程中,我們將探討如何建立一個 Python 腳本來自動執行此過程,使您能夠無縫地從 Excel 表格檔案中讀取資料並將其插入資料庫。 學完本教學後,您將能夠有效率地處理資料遷移任務。 讓我們開始吧

如何使用 Python 將 Excel 檔案匯入資料庫表

  1. 先安裝 IronXL 庫。
  2. 使用 IronXL 將 Excel 檔案載入到記憶體中。
  3. 載入您要使用的特定電子表格。
  4. 選擇要匯入的精確資料範圍。
  5. 使用 Python 與 SQLite 或 MySQL 等資料庫建立連線。
  6. 在 SQLite 資料庫中建立一個新表,用於容納匯入的資料。
  7. 將 Excel 檔案中選定的行插入到新建立的 SQLite 表中。
  8. 從建立的 SQLite 表中檢索和選擇數據,以便進行進一步的分析或處理。

在本教程中,我們將使用IronXL ,這是一個以高效處理 Excel 檔案而聞名的 Python 庫。 透過將 IronXL 整合到我們的腳本中,我們確保從 Excel 電子表格中無縫提取數據,從而能夠順利地將數據插入資料庫以進行進一步的分析和處理。

IronXL是什麼?

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。

步驟 1:安裝 IronXL 庫

第一步是安裝 IronXL 庫。 在命令提示字元中執行以下命令來安裝 IronXL。

pip install IronXL
pip install IronXL
SHELL

步驟 2:載入 Excel 工作簿

下一步是載入Excel檔案。本教學將使用以下Excel檔案。

如何使用 Python 將 Excel 檔案匯入資料庫表:圖 1 - Excel 檔案輸入範例

以下程式碼會將記憶體中已有的 Excel 檔案載入到記憶體中。

from ironxl import *  # Supported for XLSX, XLS, XLSM, XLTX, CSV, and TSV

# Assign a license key (retrieved from IronXL website)
License.LicenseKey = "IRONSUITE.ABC.XYZ.COM.15796-DEPLOYMENT.TRIAL-5X63V4.TRIAL.EXPIRES.27.MAY.2024"

# Load the Excel workbook into memory
workbook = WorkBook.Load("sample_excel.xlsx")
from ironxl import *  # Supported for XLSX, XLS, XLSM, XLTX, CSV, and TSV

# Assign a license key (retrieved from IronXL website)
License.LicenseKey = "IRONSUITE.ABC.XYZ.COM.15796-DEPLOYMENT.TRIAL-5X63V4.TRIAL.EXPIRES.27.MAY.2024"

# Load the Excel workbook into memory
workbook = WorkBook.Load("sample_excel.xlsx")
PYTHON

上面的 Python 程式碼片段示範如何使用 IronXL 程式庫載入名為"sample_excel.xlsx"的 Excel 工作簿。 首先,從 IronXL 導入必要的 Python 模組。 然後,系統會指派一個許可證金鑰來驗證庫的使用情況。 您可以從IronXL 網站取得免費許可證金鑰。 最後,採用Load方法開啟並載入指定的 Excel 工作簿到記憶體中。 這樣就可以對它的內容進行後續的程式設計操作,例如讀取資料、修改儲存格值或應用程式格式。

步驟 3:選擇工作表

若要使用 IronXL 選擇 Excel 工作簿中的工作表,您可以指定工作表索引或名稱。

# Select the first worksheet in the loaded Excel workbook
worksheet = workbook.WorkSheets[0]
# Select the first worksheet in the loaded Excel workbook
worksheet = workbook.WorkSheets[0]
PYTHON

此行選擇已載入的 Excel 工作簿中的第一個工作表,並將其指派給變數worksheet ,從而允許對工作簿中的該特定工作表執行後續操作。 這將把 Excel 工作表中的資料載入到工作表變數中。

步驟 4:開啟資料庫連接

在本教程中,我們將使用 SQLite 資料庫而不是 MySQL 資料庫伺服器。 要啟動資料庫操作,我們首先要建立與資料庫的連線。

import sqlite3

# Connect to SQLite database (or create it if it doesn't exist)
conn = sqlite3.connect('data.db')
import sqlite3

# Connect to SQLite database (or create it if it doesn't exist)
conn = sqlite3.connect('data.db')
PYTHON

上述程式碼建立了與名為"data.db"的 SQLite 資料庫的連線。 如果指定的資料庫不存在,則會自動建立。 此連接允許後續與 SQLite 資料庫進行交互,例如執行查詢和執行資料操作。

步驟 5:建立表格

下一步是在資料庫中建立一個資料庫表,我們將從 Excel 檔案匯入資料。若要在 SQLite 資料庫中建立資料表,可以使用連線物件執行 SQL 語句。

# Create a cursor object for database operations
cursor = conn.cursor()

# Define and execute SQL to create a table if it doesn't exist
cursor.execute('''
CREATE TABLE IF NOT EXISTS customer (
    id INTEGER,
    FirstName TEXT,
    LastName TEXT,
    Gender TEXT,
    Country TEXT,
    Age INTEGER
)
''')
# Create a cursor object for database operations
cursor = conn.cursor()

# Define and execute SQL to create a table if it doesn't exist
cursor.execute('''
CREATE TABLE IF NOT EXISTS customer (
    id INTEGER,
    FirstName TEXT,
    LastName TEXT,
    Gender TEXT,
    Country TEXT,
    Age INTEGER
)
''')
PYTHON

上面的程式碼片段初始化一個遊標對象,以便在 SQLite 資料庫連接中執行 SQL 命令。 它會建立一個名為"customer"的表,其中包含"id"、"FirstName"、"LastName"、"Gender"、"Country"和"Age"欄位。 如果表格尚不存在,則依照指定的列資料類型建立該表格。

步驟 6:使用 Python 將資料匯入資料庫

現在,我們將資料插入我們新建的表中。 我們將導入一個 Excel 文件,並將其資料插入 SQLite 資料庫。

# Iteratively insert data from Excel worksheet into SQLite database
for i in range(2, 11):
    # Extracting values from columns A to F in Excel worksheet
    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
    )
    # Executing SQL INSERT command
    cursor.execute("INSERT INTO customer VALUES (?, ?, ?, ?, ?, ?)", values_tuple)

# Commit data insertion to the database
conn.commit()
# Iteratively insert data from Excel worksheet into SQLite database
for i in range(2, 11):
    # Extracting values from columns A to F in Excel worksheet
    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
    )
    # Executing SQL INSERT command
    cursor.execute("INSERT INTO customer VALUES (?, ?, ?, ?, ?, ?)", values_tuple)

# Commit data insertion to the database
conn.commit()
PYTHON

上面的程式碼遍歷 Excel 工作表中的第 2 行到第 10 行,提取每一行 A 列到 F 列的值。 這些值儲存在一個元組中,表示要插入到"客戶"表中的資料。 然後遊標執行 SQL INSERT 指令,將值元組合併到表中。 這個過程對每一行重複進行,有效地將資料從 Excel 檔案匯入到 SQLite 資料庫中。 最後, conn.commit()提交事務,確保變更已儲存並持久化到資料庫中。

步驟 7:從資料庫讀取數據

若要驗證資料是否已正確插入,可以使用 SELECT 查詢從 SQLite 資料庫中的"customer"表中讀取資料。 舉例來說

# Execute a SELECT query to retrieve all data from the 'customer' table
cursor.execute("SELECT * FROM customer")

# Fetch all rows from the result set
rows = cursor.fetchall()

# Print each row to verify inserted data
for row in rows:
    print(row)

# Close the database connection to release resources
conn.close()
# Execute a SELECT query to retrieve all data from the 'customer' table
cursor.execute("SELECT * FROM customer")

# Fetch all rows from the result set
rows = cursor.fetchall()

# Print each row to verify inserted data
for row in rows:
    print(row)

# Close the database connection to release resources
conn.close()
PYTHON

上面的程式碼對 SQLite 資料庫中的"customer"表執行 SELECT 查詢,檢索所有行。 使用fetchall()方法取得的行儲存在"rows"變數中。 然後,逐行列印,顯示插入到"客戶"表中的資料。 最後,使用close()方法關閉資料庫連線以釋放資源。

如何使用 Python 將 Excel 檔案匯入資料庫表:圖 2 - 從資料庫輸出讀取

完整程式碼如下:

import sqlite3
from ironxl import *  # Supported for XLSX, XLS, XLSM, XLTX, CSV, and TSV

# Assign a license key (retrieved from IronXL website)
License.LicenseKey = "IRONSUITE.ABC.XYZ.COM.15796-DEPLOYMENT.TRIAL-5X63V4.TRIAL.EXPIRES.27.MAY.2024"

# Load the Excel workbook into memory
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')

# Create a cursor object for database operations
cursor = conn.cursor()

# Define and execute SQL to create a table if it doesn't exist
cursor.execute('''
CREATE TABLE IF NOT EXISTS customer (
    id INTEGER,
    FirstName TEXT,
    LastName TEXT,
    Gender TEXT,
    Country TEXT,
    Age INTEGER
)
''')

# Clear any existing data from the table
cursor.execute("DELETE FROM customer")

# Iteratively insert data from Excel worksheet into SQLite database
for i in range(2, 11):
    # Extracting values from columns A to F in Excel worksheet
    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
    )
    # Executing SQL INSERT command
    cursor.execute("INSERT INTO customer VALUES (?, ?, ?, ?, ?, ?)", values_tuple)

# Commit data insertion to the database
conn.commit()

# Execute a SELECT query to retrieve all data from the 'customer' table
cursor.execute("SELECT * FROM customer")

# Fetch all rows from the result set
rows = cursor.fetchall()

# Print each row to verify inserted data
for row in rows:
    print(row)

# Close the database connection to release resources
conn.close()
import sqlite3
from ironxl import *  # Supported for XLSX, XLS, XLSM, XLTX, CSV, and TSV

# Assign a license key (retrieved from IronXL website)
License.LicenseKey = "IRONSUITE.ABC.XYZ.COM.15796-DEPLOYMENT.TRIAL-5X63V4.TRIAL.EXPIRES.27.MAY.2024"

# Load the Excel workbook into memory
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')

# Create a cursor object for database operations
cursor = conn.cursor()

# Define and execute SQL to create a table if it doesn't exist
cursor.execute('''
CREATE TABLE IF NOT EXISTS customer (
    id INTEGER,
    FirstName TEXT,
    LastName TEXT,
    Gender TEXT,
    Country TEXT,
    Age INTEGER
)
''')

# Clear any existing data from the table
cursor.execute("DELETE FROM customer")

# Iteratively insert data from Excel worksheet into SQLite database
for i in range(2, 11):
    # Extracting values from columns A to F in Excel worksheet
    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
    )
    # Executing SQL INSERT command
    cursor.execute("INSERT INTO customer VALUES (?, ?, ?, ?, ?, ?)", values_tuple)

# Commit data insertion to the database
conn.commit()

# Execute a SELECT query to retrieve all data from the 'customer' table
cursor.execute("SELECT * FROM customer")

# Fetch all rows from the result set
rows = cursor.fetchall()

# Print each row to verify inserted data
for row in rows:
    print(row)

# Close the database connection to release resources
conn.close()
PYTHON

結論

總之,本教學示範了一種自動化資料處理方法,具體來說,就是將 Excel 資料提取並插入資料庫。 這個過程不僅提高了資料管理的效率,而且充分發揮了其在資料處理方面的潛力。 充分利用 Python 和 IronXL 的強大功能,優化您的資料工作流程,並充滿信心地推進您的專案。

常見問題解答

如何使用Python將Excel檔案中的資料匯入資料庫?

您可以使用 IronXL 庫將資料從 Excel 文件匯入資料庫,方法是先使用 `WorkBook.Load()` 載入 Excel 文件,然後選擇工作表並使用 SQLite 建立資料庫連線來插入資料。

在 Python 中使用 IronXL 處理 Excel 檔案有哪些好處?

IronXL 讓您在無需安裝 Microsoft Excel 的情況下處理 Excel 文件,支援跨平台操作,提供加密和公式重新運算等強大功能,並能有效率地管理資料擷取和插入流程。

如何在Python專案中安裝IronXL?

若要在 Python 專案中安裝 IronXL,可以使用指令:`pip install IronXL`。這會將 IronXL 新增到您的 Python 環境中,使您能夠有效率地處理 Excel 檔案。

是否可以在未安裝 Microsoft Excel 的情況下,使用 Python 處理 Excel 檔案?

是的,使用 IronXL,您無需安裝 Microsoft Excel 即可處理 Excel 檔案。 IronXL 提供所有必要的功能,可獨立讀取、編輯和寫入 Excel 檔案。

如何在Python中建立用於儲存Excel資料的資料庫表?

要在 Python 中建立資料庫表,可以使用 SQLite 的 `sqlite3` 模組。使用 `connect()` 建立連線後,透過遊標物件執行 SQL `CREATE TABLE` 語句。

如何驗證Excel資料是否已成功導入SQLite資料庫?

您可以透過對資料表執行 `SELECT` 查詢並使用 `fetchall()` 方法擷取並列印結果集中的所有行來驗證插入操作。

使用 Python 將資料從 Excel 遷移到資料庫應該遵循哪些步驟?

這些步驟包括安裝 IronXL、載入 Excel 檔案、選擇工作表、連接到資料庫、建立表,以及遍歷 Excel 行並使用 SQL `INSERT` 命令插入資料。

IronXL 能否處理 Excel 公式並用 Python 重新計算?

是的,IronXL 支援 Excel 公式並且可以重新計算它們,為在 Python 應用程式中操作 Excel 檔案提供了一個全面的解決方案。

IronXL 是否支援跨平台 Excel 檔案處理操作?

是的,IronXL 支援跨平台操作,包括 Windows、macOS、Linux、Docker、Azure 和 AWS 等環境,使其成為各種開發設定的多功能選擇。

IronXL 如何增強 Python 應用程式中的資料工作流程?

IronXL 透過提供高效的資料擷取、操作和插入功能來增強資料工作流程,從而最佳化資料管理流程並提高資料驅動型應用程式的效能。

柯蒂斯·週
技術撰稿人

Curtis Chau擁有卡爾頓大學電腦科學學士學位,專長於前端開發,精通Node.js、TypeScript、JavaScript和React。他熱衷於打造直覺美觀的使用者介面,喜歡使用現代框架,並擅長撰寫結構清晰、視覺效果出色的使用者手冊。

除了開發工作之外,柯蒂斯對物聯網 (IoT) 也抱有濃厚的興趣,致力於探索硬體和軟體整合的創新方法。閒暇時,他喜歡玩遊戲和製作 Discord 機器人,將他對科技的熱愛與創造力結合。