• Showing Page History #12614

CSV 取り込み方式

CSV ファイルを Money に取り込むための検討

基本アイデア

CSV ファイルを変換するための定義を定義ファイル(XMLファイル)に書いておいて、これを使って 変換をかますようにする。

各定義には、銀行名、銀行番号、CSVの1行目の文字列、各フィールドのマッピングなどを書く。 CVS の1行目は、銀行を自動識別するための Ident として使う(1行目がない場合は省略する)

銀行の支店番号、口座番号が必要だが、これは銀行ごとに1個だけ記憶しておくようにする。 (2個以上にしたいことってある?)

定義ファイルは、FeliCa2Money.exe と同じディレクトリにおく。 定義ファイルは拡張子が .xml であればなんでもよく、いくつあっても全部読み込まれる。 FeliCa2Money 公式で配布する定義は CsvRules.xml というファイル名にする。

また、ボタン1つで自動アップデートできるとよい。 (Vistaだと管理者権限が必要になるから Program Files のしたはやめたほうが本当はいいかもしれないが)

個人定義は GUI でマッピングを設定できるようにするのがいいけど(年賀状ソフトで CSV 住所録から取り込みするようなイメージ)、 面倒なのでとりあえず後回しかな?

定義ファイルの書式

以下のように書く。エンコーディングは UTF-8。ちなみに最新の定義は常にここにある。

なお、定義ファイルができたら作者までメールで送って下さい。公式に取り込みます。

<?xml version="1.0" encoding="UTF-8"?>
<CsvRules>
  <Rule>
    <Ident>OFXConverter</Ident>
    <Name>OFXConverter互換</Name>
    <FirstLine>明細日,明細金額,Money摘要欄,Money備考欄</FirstLine>
    <Format>Date,Income,Desc,Memo</Format>
    <Order>Ascent</Order>
  </Rule>

  <Rule>
    <Ident>ebank</Ident>
    <Name>イーバンク</Name>
    <BankId>36</BankId>
    <FirstLine>取引日,入出金(円),残高(円),入出金先内容</FirstLine>
    <Format>Date,Income,Balance,Desc</Format>
    <Order>Ascent</Order>
  </Rule>

  <Rule>
    <Ident>JapanNetBank</Ident>
    <Name>ジャパンネット銀行</Name>
    <BankId>33</BankId>
    <FirstLine>"操作日(年)","操作日(月)","操作日(日)","取引順番号","摘要","お支払金額","お預り金額","残高"</FirstLine>
    <Format>Year,Month,Day,Id,Desc,Outgo,Income,Balance</Format>
    <Order>Ascent</Order>
  </Rule>

  <Rule>
    <Ident>SonyBank</Ident>
    <Name>ソニー銀行</Name>
    <BankId>35</BankId>
    <FirstLine>"お取り引き日","摘要","お預け入れ額","お引き出し額","差し引き残高"</FirstLine>
    <Format>Date,Desc,Income,Outgo,Balance</Format>
    <Order>Ascent</Order>
  </Rule>
</CsvRules>

Ident は必ず一意の文字列にすること(他のと衝突すると嫌なことが起こる)

Name は、CSV形式選択ダイアログボックスに表示するので、ユーザがみてわかる文字列にする。

BankId は銀行番号。Google 先生で調べる。銀行じゃない場合は BankId エントリはなくてよい。

FirstLine には CSV の1行目にくる文字列を書く。この文字列は CSV フォーマットの自動選択に使う。 なお、1行目がないような CSV ファイルに対応する場合は、FirstLine エントリ自体を書かないようにすればよい。 この場合、CSV ファイルはきちんと1行目から読み込まれる。ただし、フォーマット自動選択は効かなくなるので、 ダイアログボックスで毎回選択する必要がある。

Format には、各 CSV のフィールドのマッピングを記載する :

  • Date : 日付(年月日、2008/1/1, 08.1.1, 080101 とか。フォーマットは自動判別)
  • Year, Month, Day : 日付、年月日がフィールドわかれている場合
  • Id : 連番 (なければ FeliCa2Money が自分でつける)
  • Desc : 適用
  • Income : 入金額 (値が負の場合は出金とみなす)
  • Outgo : 出金額 (値が負の場合は入金とみなす)
  • Balance : 残高
  • Memo : 備考
  • Dummy : ダミー (このカラムは読み飛ばす)