2013年7月22日 星期一

筆記:Python 輸出 .csv .xls .tsv …

近期恰好遇到需要在網站上提供輸出 .csv 檔案的功能
而無奈地,由於內含 utf8 中文字元的關係
使得輸出後的 .csv 檔案,透過 excel 開啟後會出現亂碼(明明 google 表單匯入都正常)

為了解決此問題,於是我曾嘗試使用 python 內建的 csv module, 高階版的 unicodecsv, 手動 補上 BOM 的資訊 … 但是透過 excel 2011 for mac 開啟後,中文仍然都是亂碼 Orz

仔細想想,既然假定使用者會用 excel 開啟檔案
那也不用強求一定要輸出 csv, 直接輸出 醜醜的 excel 檔案即可
於是最後找到了 tablib ,神速的短短幾行程式碼便能完成工作:

# 安裝
sudo pip install tablib

# 使用
headers = (u'中文', u'沒在怕的')
data = [
    ('John', 'Adams'),
    ('George', 'Washington')
]
data = tablib.Dataset(*data, headers=headers)

# 轉換成各種格式的字串
data.csv
data.xls
data.xlsx
data.yaml
data.tsv
data.json
… 

沒有留言:

張貼留言