EmptyPage.jp > Gadgets > zengin.py

zengin.py - CSV‐全銀フォーマット変換フィルタ

公開: 2005年9月26日/更新: 2009年1月17日

zengin.py は振込先、振込金額のデータを格納した CSV(カンマ区切り)形式のファイルから、全国銀行協会制定フォーマット(通称全銀フォーマット)形式の振込情報ファイルを生成するスクリプトです。

特徴

「Excel やデータベースからの CSV 出力をできるだけそのまま食わせたい」「使いやすい GUI のツールが見つからなかった」というのが開発のおもな動機になっています。

短所も挙げておきます。

動作環境

zengin.py は Python スクリプトです。使用するには Python 2.4 以降を利用できる環境が必要です。Python については以下をご参照ください。

Python Programming Language
http://www.python.org/
Python Japan User's Group
http://www.python.jp/Zope/

バージョン 0.2.1 からスクリプトを Windows の実行可能ファイル (.exe) に変換したものを用意しました。Python インタプリタをインストールせずに実行できます。こちらを使用する場合は、本ドキュメントの zengin.py を zengin.exe に読み替えてください。

インストール

zengin.py は単純なスクリプトです。アーカイブ内のファイルを任意のディレクトリに展開して実行してください。

ダウンロード

zengin-0.2.2.zip(Python スクリプト版)
http://www.emptypage.jp/download/zengin-0.2.2.zip
zengin-0.2.2-win-bin.zip(Windows 実行ファイル版)
http://www.emptypage.jp/download/zengin-0.2.2-win-bin.zip

使い方

zengin.py -a account-filename -t template-filename -f format [-b] [-d date] [-o output-filename] [csv-filename]

角括弧 [...] で囲まれているものは、そのオプションが省略可能であるということをあらわします。省略された場合の挙動は各オプションの解説を参照してください。

オプションはすべて大文字・小文字が区別されます。小文字のオプションを大文字で指定してしまわないように注意してください。各オプションの意味は以下の通りです。

-a account-filename

振込を行う出金口座の情報を記述した、アカウント・ファイルのパスを指定します。「アカウント・ファイルの書式」を参照。

-t template-filename

変換元 CSV ファイルのデータの書式情報を記述した、テンプレート・ファイルのパスを指定します。「テンプレート・ファイルの書式」を参照。

-f format

出力する全銀フォーマットの種類を指定します。format には以下のいずれかを指定します。

給与振込: kyuuyo
賞与振込: shouyo
総合振込: furikomi
[-d date]

振込を行う日付を指定します。date には YYYY-MM-DD 形式の日付を記述します(例: 2005 年 9 月 22 日なら 2002-09-22)。省略した場合は現在の日時が使われます。

[-b]

csv-filename をタブ区切りのファイルとして読み込みます。

[-o output-filename]

変換結果の出力先ファイルを指定します。省略した場合は標準出力に出力します。

[csv-filename]

変換元の CSV ファイルのパスを指定します。省略した場合は標準入力から取り込みます。

アカウント・ファイルの書式

アカウント・ファイルには、出金元となる口座の情報を記述します。ファイルは以下のような書式で指定します。

アカウント・ファイルの例: account.cfg
# アカウント・ファイルのサンプル
# '#' で始まる行はコメント。

# このファイルのエンコーディング。
encoding: shift_jis

# 口座名義。カタカナで。
name: シバタ マサアキ

# 金融機関コード。4桁数字。
bank: 7777

# 支店番号。3桁数字。
branch: 555

# 預金種目。1: 普通, 2: 当座。文字列「普通」「当座」でもよい。
type: 普通

# 口座番号。7桁数字。
account: 0123456

テンプレート・ファイルの書式

テンプレート・ファイルには、変換元の CSV ファイルについての情報を以下のような書式で記述します。

テンプレートファイルの例: template.cfg
# テンプレート・ファイルのサンプル
# '#' で始まる行はコメント。

# CSV ファイルのエンコーディング。
encoding: shift_jis

# CSV ファイルの一行目が見出し(ヘッダ)なら 'header' を指定する。そうでなけれ
# ば 'data' を指定。
firstline: header

# CSV ファイルでのデータの出現順をカンマで区切って指定。現在のところ、以下のシ
# ンボルが使用できる。
# 
#   name: 口座名義
#   bank: 金融機関コード
#   branch: 支店番号
#   type: 預金科目
#   account: 口座番号
#   amount: 振込金額
#   ex1: 社員番号(オプショナル)
#   ex2: 所属コード(オプショナル)
# 
# 使用されないカラムにはなにもシンボルを入れずに区切りのカンマだけを記入する。
# 
# 例: 口座名義、金融機関名、金融機関番号、支店名、支店番号、口座科目、口座番号、金額
# という順番の場合、
#   fields: name,, bank,, branch, type, account, amount
# ※ 金融機関名、支店名は変換には使われないので空欄になっている。
fields: , name,,, bank, branch, type, account, amount

注意: 0.2.0 より前のバージョンでは、振込み金額の指定シンボルが ammount となっていました。0.2.0 以降ではこのスペルミスが正しい綴り、amount に修正されています。このため、0.2.0 以降の zengin.py を使用するには、それまでのテンプレートファイルの該当箇所を書き換える必要があります。

CSV ファイルの書式

変換元である CSV ファイルは、テンプレート・ファイルに指定した形式にのっとっているようにします。各項目には以下のような値を使用できます。

項目 (シンボル) 使用できる形式
口座名義 (name) 全角・半角カタカナ
金融機関コード (bank) 4 桁数字
支店番号 (branch) 3 桁数字
預金科目 (type) 文字列 "普通", "当座" または 1, 2
口座番号 (account) 7 桁数字
振込金額 (amount) 10000
10,000
¥10,000
社員番号 (ex1) 数字
所属コード (ex2) 数字

以下は処理できる CSV ファイルの例です(Microsoft Excel から[名前をつけて保存]コマンドで CSV ファイルとして保存したもの)。このデータを処理するなら、テンプレートファイルの fields の設定を「fields: , name,,, bank, branch, type, account, amount」としておきます。「firstline: header」も必要でしょう。

CSV ファイルの例: banking.csv
口座名義, フリガナ, 金融機関名, 支店名, 金融機関コード, 支店番号, 科目, 口座番号, 振込額
中村 友次郎, ナカムラ ユウジロウ,□□銀行, ××支店,8888,666, 普通,3141592,"\2,000,000"

To Do

ライセンス

Copyright (c) 2005 M.Shibata

Permission is hereby granted, free of charge, to any person obtaining a copy 
of this software and associated documentation files (the "Software"), to 
deal in the Software without restriction, including without limitation the 
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 
sell copies of the Software, and to permit persons to whom the Software is 
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in 
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 
IN THE SOFTWARE.

BSD ライセンスです。(参考日本語訳)

更新履歴

0.2.2 (2006-08-30)
最後のレコードが改行で終わっていない場合のエラーがタブ区切りデータではまだ起こっていたのを修正。
0.2.1 (2006-07-05)
最後のレコードが改行で終わっていない場合にパースに失敗していたのを修正。
0.2.0 (2006-06-24)
タブ区切りに対応(-b オプション)。
Windows 用 exe のパッケージも用意した。
恥ずかしい typo を修正。s/ammount/amount/
大きな CSV ファイルでパフォーマンスが著しく低下していたのを改善。
halfwidth_to_fullwidth_kana の変換テーブルで半角「イ」が「ヰ」に変換されてしまっていたのを修正。
0.1.0 (2005-09-26)
公開。