文章目錄
- 安裝模塊
- 讀取Excel
- 數據庫取數
- 匹配數據和更新Excel數據
在Ubuntu系統的環境下基本職能借助Python的openpyxl模塊實現對Excel數據的操作。
安裝模塊
本次需要用到的模塊需要提前安裝(如果沒有的話)
pip3 install openpyxl
pip3 install pymysql
在操作前,需要準備好用于操作的Excel文件,假設其文件名為 example.xlsx
。
此外,還需準備好相應的數據庫,本文以MySQL 5.7數據庫為例,確保數據庫中包含相應的數據表及數據。
讀取Excel
使用openpyxl模塊讀取Excel文件中的數據,可參考以下代碼示例:
from openpyxl import load_workbook# 加載Excel文件
workbook = load_workbook('example.xlsx')# 選擇活動工作表
sheet = workbook.active# 讀取數據并存儲
rows = sheet.max_row
cols = sheet.max_column
data_list = []
for row in range(1, rows + 1):row_data = []for col in range(1, cols + 1):cell_value = sheet.cell(row=row, column=col).valuerow_data.append(cell_value)data_list.append(row_data)# 顯示讀取的數據
for row in data_list:print(row)
上述代碼將Excel文件中的數據讀取并存儲到 data_list
列表中,以便后續與數據庫數據進行匹配。
數據庫取數
以下是連接數據庫并進行簡單查詢的代碼示例:
import pymysql# 連接數據庫
connection = pymysql.connect(host='localhost',user='root',password='your_password',database='your_database',charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor
)try:with connection.cursor() as cursor:# 查詢數據search_value = data_list[0][0] # 以data_list第一個元素的第一列的值作為搜索條件sql = "SELECT * FROM your_table WHERE some_column = %s"cursor.execute(sql, (search_value,))result = cursor.fetchall()# 顯示匹配結果for row in result:print(row)
finally:connection.close()
在使用過程中,需要根據實際情況修改連接參數及查詢語句中的相關字段。
匹配數據和更新Excel數據
假設匹配到的數據存儲在 result
列表中,現在需要將匹配結果更新回Excel數據中,具體操作如下:
from openpyxl import Workbook# 創建新的工作簿
workbook = load_workbook('example.xlsx')
sheet = workbook.active# 寫入表頭信息
sheet['A'] = '原數據'
sheet['B'] = '匹配結果'# 將原數據和新列寫入Excel
for i, row in enumerate(data_list, start=1):sheet.cell(row=i, column=1).value = rowmatched = Falsefor res in result:if row[0] == res['col']: # 假設匹配字段在第一列且數據庫查詢結果字段名為'col'sheet.cell(row=i, column=2).value = '匹配成功'matched = Truebreakif not matched:sheet.cell(row=i, column=2).value = '無匹配數據'# 保存更新后的新工作簿
workbook.save('matched_data.xlsx')