-
Notifications
You must be signed in to change notification settings - Fork 11
Csv取り込み
CSV ファイルを Money に取り込む方式について
CSV ファイルを変換するための定義を定義ファイル(XMLファイル)に書いておいて、これを使って 変換をかける。
各定義には、銀行名、銀行番号、CSVの1行目の文字列、各フィールドのマッピングなどを記述。 CVS の1行目は、銀行を自動識別するための Ident として使う(1行目がない場合は省略する)
銀行の支店番号、口座番号が必要だが、これは銀行ごとに1個だけ記憶しておくようにする。 (2個以上にしたいことってある?)
定義ファイルは、以下のディレクトリに置く。
- XP の場合 : C:\Documents and Settings\username\Local Settings\Application Data\tmurakam.org\FeliCa2Money
- Window Vista/7 の場合 : C:\Users\username\AppData\Local\tmurakam.org\FeliCa2Money
定義ファイルは拡張子が .xml であればなんでもよく、いくつあっても全部読み込まれる。 FeliCa2Money 公式で配布する定義は CsvRules.xml というファイル名にする。このファイルは自動アップデートによりインストールする。 書き換えないこと。
個人定義は GUI でマッピングを設定できるようにするのがいいけど(年賀状ソフトで CSV 住所録から取り込みするようなイメージ)、 面倒なのでとりあえず後回しかな?
以下のように書く。エンコーディングは UTF-8。ちなみに最新の定義は常にhttps://github.com/tmurakam/felica2money/raw/master/defs/CsvRules.xmlにある。
なお、定義ファイルを作ったら作者までメールで送って下さい(アドレスは tmurakam@tmurakam.org)。公式に取り込みます。
<?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>
<Separator>Comma</Separator>
</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 : ダミー (このカラムは読み飛ばす)
このうち、Date または Year/Month/Day のいずれかは必須。Income/Outgoのいずれかは必須。 これらの情報が欠けていると OFX ファイルが正しく生成されません。これ以外のはなくても自動で補完します。
Order は CSV の並び順。Ascent だと昇順(日付順)、Descentだと降順(日付逆順)。 また、"Sort" を指定した場合、日付順に自動ソートする (ver 2.9以降)。取引が日付順になっていない場合のみ、これを指定すること。
Separator はフィールド区切り文字の指定。Comma だとカンマ(,)、Tab だとタブ文字(\t) となる。デフォルトはカンマ。