由於需要從大量的 excel 檔中擷取資料,就想是否可以用程式的方式來解決,一查知下, 果然有個
xlrd 模組可以讀寫 excel 檔。例如, 我想從當前資料夾下一個個打開 excel 檔,並且檢查每一筆資料中, 若第 B 欄的內容符合條件, 就將同一列 B 欄與 D欄的資料寫入輸出檔案中, 就可以撰寫類似以下的程式:
import glob
import xlrd
with open('result.txt', mode='w', encoding='utf-8') as of:
for xlsfile in glob.iglob("order*.xls"):
wb = xlrd.open_workbook(xlsfile)
for i in range(wb.nsheets):
st = wb.sheet_by_index(i)
if st.nrows > 1:
for r in range(st.nrows):
if st.cell(r, 1).value in ('table','chair'):
of.write(st.cell(r, 1).value + ',' +
st.cell(r, 3).value + "\n")
要注意的是, 這個套件中不論是列編號或是欄編號都是從 0 開始, 因此 excel 檔中的第 1 列編號為 0, 第 B 欄編號為 1, 所以上面程式中 cell(r, 1) 就是 excel 檔中第 r+1 列的第 B 欄。詳細的用法可以參考該模組的
說明文件, 或是參考這一份
簡單的教學。
沒有留言:
張貼留言