Python可以協助處理大量重複性工作,將Excel上的工作表自動化複製至上百個不同的Excel檔案上
實務上可能會遇到必須將一個Excel工作表複製到不同的Excel檔案上的情況,一般而言利用Excel移動或複製工作表的功能也能處理,但是當這個動作必須執行上百次,移動到上百個不同的Excel檔案時,就必須耗時的一個一個執行重複性工作,然而利用Python就可以輕鬆簡單化這項工作。
不過Excel檔案因儲存的格式可分為xlsx(一般版本)跟xls(相容版本),這兩個版本在Python處理上需要使用不同的套件處理,這次就以相容版本為例進行示範,有興趣或是有需要的人可以再去搜尋
其他版本的處理。
操作範例:
這邊會用到3個套件,開始執行前,尚未安裝xlrd、xlwt及xlutils者需要先安裝,在Window環境下,開起命令提示字元,輸入pip install xlrd、 pip install xlwt以及pip install xlutils,安裝完成後,開始執行後續的程式碼。
import xlrd import xlwt from xlutils.copy import copy def replace_xls(sheetname): table = xlsx.sheet_by_name(sheetname) rows = table.nrows cols = table.ncols worksheet = wb2_1.add_sheet(sheetname) for i in range(0,rows): for j in range(0, cols): # print(i,j,table.cell_value(i, j)) worksheet.write(i, j ,table.cell_value(i, j)) wb2_1.save(filename2) xlsno=["01","02","03","04","05","06","07","08","09","10","11","12","13", "14","15","16","17","18","19","20"] xls_len = len(xlsno) sheetnames=[u"編碼表"] for j in name: flile_name = r'編碼整理.xls' xlsx = xlrd.open_workbook(flile_name) for i in range(xls_len): filename2=r'C:\\Users\\data\\data%s.xls'%(xlsno[i]) wb2 = xlrd.open_workbook(filename2) wb2_1=copy(wb2) for sheetname in sheetnames: replace_xls(sheetname)
這裡可以簡單拆解成2個部分,第一塊在def這段主要就是執行Excel工作表複製的程式。
但是因為需要執行的檔案有20個,因此後續呼叫執行def的程式必須用迴圈包裹起來,請程式批次執行,此為程式的第二部分。
執行完成後這20個檔案都會分別被插入一個名為"編碼表"的工作表,並存檔。
利用這樣的方式,可以快速完成工作表的複製,而不需要一個一個手動完成,對於工作上來說有2個好處,(1)節省時間,提升工作效率
(2)人工作業難免會有遺漏,例如:沒有複製到工作表,或是複製到錯誤的工作表等情況。有機會大家不妨試試看~
留言
張貼留言