由於工作的原因,經常需要查詢統計各地數據,有時結果收集上來后發現需要對其中某些列的數據進行轉換,例如將代碼值轉成中文含義。
重新統計需要花費時間和運維精力,所以自己寫了一個簡單的替換腳本。當然,理想狀態還是在查詢統計前就把要求確認。
下面的代碼復制到.py文件中,安裝完成Python后,安裝必要的包(xlrd、xlutils)就可以使用了。注意的是,需要替換的所有文件需和腳本文件同一目錄。
(腳本只能處理xls擴展名的文件,因為對xlsx處理可用的Python包沒找到,但是xlsx的可以批量替換擴展名再進行處理,批量替換擴展名一行命令就搞定,不會的可以Bing一下)
from xlutils.copy import copy import xlrd import os import sys print("要替換的文件需與腳本同一目錄") a = input("輸入替換前的內容 \n") b = input("輸入替換后的內容 \n") c = input("輸入替換是第幾列 \n") c = int(c) - 1 #當前路徑 print(sys.path[0]) for files in os.walk(sys.path[0]): for file in files[2]: #print(file[-3:]) if(file[-3:] == 'xls'): #1、打一要修改的excel #2、再打開另一個excel #3、把第一個excel里面修改東西寫到第二個里頭 #4、把原來的excel刪掉,新的excel名改成原來的名字 book = xlrd.open_workbook(file) table1 = book.sheets()[0] nr = table1.nrows nc = table1.ncols num = 0 #復制一個excel new_book = copy(book) #通過獲取到新的excel里面的sheet頁 sheet = new_book.get_sheet(0) for i in range(0,nr): #print(str(table1.cell(i,c).value)) if(str(table1.cell(i,c).value) == a): #寫入excel,第一個值是行,第二個值是列 sheet.write(i, c, b) num = num + 1 #保存新的excel,保存excel必須使用后綴名是.xls的,不是能是.xlsx的 new_book.save('2.xls') #刪除原有 os.remove(file) #將新文件重命名原有文件 os.rename('2.xls',file) print(file + " 替換完成 共替換"+ str(num) + "條") ex = input("是否退出,Y or N ? \n") if(ex == 'Y'): exit()