vcf2csv 與 csv2vcf: 試算表與 Android 通訊錄互相轉換檔案格式
還好老婆買的新手機是 HTC Aria 而不是 iPhone。 所以我決定值得花一些時間, 幫她把試算表檔案裡面的通訊錄轉換到她的智慧手機上面。 在這裡分享三支小程式, 方便大家將通訊錄在 .vcf 與 .csv 兩個格式之間互轉。 前者是 Android 的格式; 後者方便電腦上試算表軟體編輯。 快速使用指南: 將 即時打包檔 解壓縮, 然後就可以在 linux 電腦上:
- 產生可編輯的檔案:
./qp28bit < contacts.vcf | ./vcf2csv > editable.csv
- 用 oocalc 編輯 editable.csv
- 將它轉回 vcf 檔讓 Android 匯入:
./csv2vcf < editable.csv > new-contacts.vcf
以下是詳細解說:
- qp28bit 把 .vcf 檔案裡面每一個
(可能跨越數列的) quoted-printable 編碼字串改成全部放在同一列的
8-bit 編碼字串。 例如:
./qp28bit contacts.vcf > contacts-8bit.vcf
會將解碼完的字串放入新的檔案 contacts-8bit.vcf 當中, 方便你使用任何純文字編輯器閱讀/編修。 對於 Android 所匯出的檔案, 有時我必須如此解碼兩次。 - vcf2csv 把 不含跨列欄位的
Android 的通訊錄格式 .vcf 轉成試算表格式 .csv。 更精確地說, (1)
請先用 qp28bit 處理過您的 .vcf 檔, 再餵給 vcf2csv 吃 (2) PHOTO
欄位會默默地消失。 例如:
./vcf2csv contacts-8bit.vcf > editable.csv
將 contacts-8bit.vcf 轉成 calc (OO.o 的試算表軟體) 可以讀取的 editable.csv。 若在命令列上指定 -d, 則可更改分隔符號 (原本是 ",")。 例如:./csv2vcf -d '#' contacts.vcf > editable.csv
所產生 csv 檔採用井號而非逗號作為分隔符號。 - csv2vcf 把試算表檔案轉成 Android
的通訊錄格式。 例如:
./csv2vcf editable.csv > new-contacts.vcf
將 editable.csv 轉成 new-contacts.vcf . 如果您的輸入檔案所採用的分隔符號不是逗號, 也可在命令列上指定 -d 選項。
這些程式碼超級精簡, 只能處理最普通的檔案, 而且沒有防錯機制。 更明確地說:
- 這些程式不處理引號。 也就是說, 您的資料內不可含有逗號; 或者, 若一定要用逗號, 那麼您就必須用 -d 指定不同的分隔符號。
- 這些程式都假設入資料採用 utf8 字元集。 如果你查看 qp28bit 的原始碼就會明顯地看到這個假設。 若您的試算表軟體匯出檔案時, 採用其他字元集 (例如 big5, gb2312, ...), 則需要先用 iconv 指令轉檔。
- csv2vcs 採用比較簡單的 8-bit encoding 而不是原來比較複雜的 quoted-printable encoding。 總之 Android 可以接受就好了。
- 三支程式的輸出格式都採用 Linux 格式的換列 -- 換列字元是 LF 單獨一個, 而非 CR LF 兩個字元。
好吧, excel 也可以讀寫 csv 檔啦。 但是下次請給 OO.o 一個機會, 好嗎? 就當做是對我的回饋吧。
不同廠牌手機及應用軟體的注意事項
不同廠牌的智慧手機, 或不同的應用軟體, 所採用的欄位名稱可能略有出入。 以下列出我所知道的手機及軟體的注意事項:
- 欲匯入 vcf 檔至 gmail, 應先將所有的 "EMAIL;INTERNET" 改為 "EMAIL;HOME", 變成 像這樣。
- 欲匯入 csv 檔至 zimbra, 應先將欄位名稱改為: "firstName", "lastName", "fullName", "homePhone", "mobilePhone", "workPhone", "email", "email2",... 等等, 變成 像這樣。
留言/討論?
您有使用上的問題嗎? 請到 這帖部落格 留言。
歷史
- 2011/02/07: 完全重寫。 用三個比較模組化的指令取代原先兩個雜亂、 有 bug 的指令。
- 2010/08/18: 初版
- 本頁最新版網址: https://frdm.cyut.edu.tw/~ckhung/p/vcf2csv/index.zh_TW.php; 您所看到的版本: February 14 2012 02:32:26.
- 作者: 朝陽科技大學 資訊管理系 洪朝貴
- 寶貝你我的地球, 請 減少列印, 多用背面, 丟棄時做垃圾分類。
- 本文件以 Creative Commons Attribution-ShareAlike License 或以 Free Document License 方式公開授權大眾自由複製/修改/散佈。