• Showing Page History #48504

CSV 取り込み方式

CSV ファイルを Money に取り込む方式について

基本仕様

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

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

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

定義ファイルは、以下のディレクトリに置く。

C:\Documents and Settings\username\Local Settings\Application Data\tmurakam.org\FeliCa2Money

定義ファイルは拡張子が .xml であればなんでもよく、いくつあっても全部読み込まれる。 FeliCa2Money 公式で配布する定義は CsvRules.xml というファイル名にする。このファイルは自動アップデートによりインストールする。 書き換えないこと。

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

定義ファイルの書式

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

なお、定義ファイルを作ったら作者までメールで送って下さい(アドレスは 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) となる。デフォルトはカンマ。