highlight.js

星期四, 11月 08, 2018

使用 Python 從 excel 檔終結取資料

由於需要從大量的 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 欄。詳細的用法可以參考該模組的說明文件, 或是參考這一份簡單的教學

從 eml 檔擷取郵件夾檔

最近遇到一個需求, 需要從一大堆的 eml 檔把郵件中的夾檔抽出來,因此找到一個 outlook add-on, 叫做 Ourlook Save Attachments from EML files, 可以針對特定的資料夾中的 eml 檔把其中的夾檔通取出存檔。

這個 add-on 其實跟 outlook一點都沒關係, 但是因為不是獨立的執行檔, 所以還是得要有 outlook 才行, 這是唯一美中不足之處。