1. 程式人生 > >Python讀取excel指定列生成指定sql指令碼

Python讀取excel指定列生成指定sql指令碼

需求

最近公司幹活,收到一個需求,說是讓手動將資料庫查出來的資訊複製貼上到excel中,在用excel中寫好的公式將指定的兩列資料用update這樣的語句替換掉。例如:
有個A庫,其中有兩個A.01和A.02欄位,需要將這兩個欄位替換到下面的sql語句中,

update A set A.01 = 'excel第一列的值' where A.02 = 'excel第二列的值'

雖然excel中公式寫好了,但是還需要將總計的那行復制貼上到txt文件中,所以索性太麻煩,果斷用Python寫了一個自動化的指令碼,雖然查出的資料還需要手動複製excel中,但是後續操作即可用指令碼完成

讀取excel指定列實現生成txt

廢話不多說直接上程式碼:

#coding=utf-8
from openpyxl import load_workbook

#第一套servicebus.t_spis_servicebus_svcmain表的

#讀取excel的資料
def read_excel():
    #開啟一個workbook
    wb = load_workbook(filename='xxx.xlsx')
    #獲取所有表格(worksheet)的名字
    sheets = wb.get_sheet_names()
    #遍歷每一個sheet,並且拿到worksheet物件
    for
i in range(len(sheets)): ws = wb.get_sheet_by_name(sheets[i]) #宣告list list_A_B = [] #遍歷A,B列的所有資料值,ws.max_row:獲取最大行數 for rowNum in range(1,ws.max_row+1): if (ws.cell(row=rowNum,column=1).value != None) and (ws.cell(row=rowNum,column=2).value != None
): #ws.cell(row=rowNum,column=1).value:拿到指定列的行資料 sql = 'update A set A.01=' + "'" + ws.cell(row=rowNum,column=1).value + "' " + 'where A.02=' + "'" + ws.cell(row=rowNum,column=2).value + "'"+ ';' list_A_B.append(sql) #print(list_A_B) text_save(list_A_B,'A.txt') print(str(sheets[i]) + '已完成!') print('執行成功!') #將讀取的資料存入txt文件中 def text_save(content,filename,mode='a'): #開啟檔案 file = open(filename,mode) for i in range(len(content)): number = content[i] + '\n' file.write(number) file.close() if __name__ == '__main__': read_excel()

總結

其中用到的是openpyxl這個庫,個人感覺非常好用,初步寫的時候參考了一下國外大佬的一篇部落格,附上鍊接:
點我去看大佬部落格