CSV 轉 OFX

CSV 轉 OFX

先前想要把所有記帳資料倒出來重新寫入,結果這路途真是困難重重。調查一下才發現,檯面上的記帳軟體多數能「匯入」各種常見格式的資料,可是「輸出」就不這麼大方。以 MoneyWiz 為例,只支援PDF以及 CSV兩種格式。CSV 算是可以輕鬆修改的格式,不過問題就在於 MoneyWiz 在匯入 CSV的時候,會直接略去「時間」這欄。這件事情完全不符合邏輯:哪有用自家的app輸出、再匯入卻會造成部分資料損失 囧!總之MoneyWiz的說明文件中提到:「用 OFX或QFX格式就可以把時間讀進來囉」(再提一遍:你不能輸出這些格式 orz)。

原本想要硬拼一筆一筆輸入,不過實在太血汗,最後乖乖來找 CSV 轉 OFX/QFX 的方法。最大的困難就是:「我不知道 OFX/QFX格式長什麼樣」,官方的文件相當冗長,完全不實用,只好繼續在網路上挖其他人的心得或範例。

在這個過程中,找到幾個網站或文件,不過後來因故派不上用場,在這邊還是記錄一下:

  • CSV converter
    • 註冊免費,上傳你的CSV檔案,由於不見得能自動辨識CSV文件的各欄位,所以網站有提供下拉選單讓你手動對應。後來沒用的原因是,手動對應的欄位「只有日期(date)、沒有時間(time)」,所以就算轉成 OFX還是不能滿足我的需求。
  • A csv to ofx / qif converter in Python
    • 不會 Python ,試了他附的幾個案例都無法順利執行,先跳過。
  • Convert a paypal CSV export to an OFX file
    • 雖然也是 Python ,不過語法簡單多了,大概看的懂。不過程式有幾個變數在我的Paypal CSV找不到,後來找到可以繞過去的方法,所以就沒有繼續研究,不然我覺得這隻程式的解法最好。

前面說到因為不清楚 OFX 的格式,所以得要先找個 OFX 範本。範本從哪裡來?最後是從 PayPal CSV to OFX Writer 看到一線曙光。程式開發者相當佛心,給了30天的全功能試用!所以我就利用這隻程式與Paypal CSV 轉出可以給 MoneyWiz 吃的 OFX檔案。

聽起來很棒 XD 不過中間還是有些問題需要自己動手處理一下(遠目)。

首先是哪裡來的 Paypal CSV 檔案?
Paypal 自家的網站:「交易記錄>下載記錄」,以英文版網頁來說:

  1. 選擇「Activity」頁面
  2. 右側應該會出現「Statements」
  3. 點選之後,選擇「Export activity」
  4. 瀏覽器會跳到以下網址
  5. 選擇你有交易的時間、下載檔案格式選擇「Comma… / All activity」
  6. 總算拿到檔案了,這個檔案就可以直接上傳到「 PayPal CSV to OFX Writer」進行轉檔。

Paypal CSV 的內容如下:
一開始是檔頭、接續可以有很多行的交易記錄,建議看原始的格式會比較清楚(右下角的 view raw)。

於是可以開始動手把 MoneyWiz 輸出的 CSV 檔案改成Paypal CSV 格式了。修改過程有以下幾點注意事項:

  • 日期(date):格式為 yyyy-mm-dd ,最簡單的改法就是在 Excel 裡面打開、再修改格式後儲存。
  • 時間(time):格式微:hh:mm:ss,一樣到Excel裡面把消失的秒數補回去。
  • Name:轉為 OFX 導入 MoneyWiz時,這欄會對應到收款人,建議所有交易記錄在這欄使用一樣的內容。待資料順利導入MoneyWiz,再從程式設定一口氣刪除就好。
  • Type:轉為 OFX 導入 MoneyWiz時,這欄會對應到「描述」。至於MoneyWiz裡面的「類型」,則是在OFX匯入的時候可以手動選擇。
  • Receipt ID 保持原狀就好
  • Balance:需要有數值不能留空,但是匯入 OFX時好像用不到。
  • 每個欄位之間,除了以逗點分隔、也需要雙引號框起每一個欄位。話說Excel 產生的 CSV 檔案似乎沒辦法主動加入雙引號,所以我是用 OpenOffice 另存新檔,存檔介面中需加選「編輯篩選設定」、並且在後續勾選「文字儲存格一律加上引號」。

大概就是這樣,收工。 XD

發表迴響