CSV、固定長ファイル操作
目次
コンピュータのソフト間のデータ移管に、CSVファイルや固定長ファイルが使われます。
CSVファイルや固定長ファイルを取扱うには、MS-Excel や MS-Access が有れば充分です。最近売られているパソコンは、最初から Excel がインストールされている場合が多いですね。
しかし、この MS-Officeスイート が付いていないパソコンを購入した方や、MS-Office が肌に会わない人は、下記で紹介するソフトを試してみる価値が有るかも知れません。
CSVとは
CSV (Comma Separated Value カンマ区切り) ファイル形式のことです。
カンマで列を区切られたテキストファイルで、主に表計算やデータベース管理システムアプリケーション間でのデータの交換に使用されます。一般的には 2 つの形式があり、それぞれ CSV1、CSV2 と呼ばれることがあります。
CSV1:
レコード形式を持ったデータを表すフォーマットで、レコードの終わりに改行記号 (CR/LF コード) が入り、各列間はカンマで区切られます。また、文字列は、前後をダブルクォーテーションで囲み、空白の列は何も書かずにカンマを続けます。
CSV2:
CSV1 とほぼ同じですが、文字列をダブルクォーテーションで囲みません。ただし、セル内にカンマや改行マークが有るセルに限り、ダブルクォーテーションで囲まれます。Excel で生成する CSV はこのタイプです。
Excel が出力する CSV は、作業中のワークシートのセルに表示されている文字列および値だけが保存されます。列のデータはカンマ (,) で区切られ、行のデータは改行記号で区切られます。セルのデータにカンマが含まれている場合、セルの内容はダブル クォーテーション (") で囲まれます。
CSVに文字属性をつける方法
CSVファイル形式は、不要な空白を含まないため、コンピュータ間でデータを授受するのに、コンパクトで便利な形式です。しかし、Excelで読み込むとき、Excelの得意な「余計なおせっかい」をするために、CSVで文字属性を明示的に設定しておかないと、文字化けすることが有ります。
まず、下記をダウンロードしてExcelで開いてみてください。
@通常のCSV:bad.csv←bフ頭「0」が欠落して数値データになってしまいます。
A文字属性をつけた場合:good.csv←ゼロゼロ が正しく表示されます。
やり方:文字属性を付けたいデータを =" " で挟むだけです。
次項の Cassava Editor を使って開くと、下記のように見えます。
例えば、「文字表示したい数字データ」を、ホストコンピュータから CSV形式で書き出すときに、上記の加工をしておけば、ユーザが Excel で開いたときに、ゼロが欠落せずに表示できるわけです。
ちなみに、「ジェームズ・ボンド」について詳しいことは下記を参照下さい。
http://ja.wikipedia.org/wiki/%E3%82%B8%E3%82%A7%E3%83%BC%E3%83%A0%E3%82%BA%E3%83%BB%E3%83%9C%E3%83%B3%E3%83%89
「島村ジョー」のデータは、下記を参照下さい。
http://www.geocities.co.jp/Playtown-Spade/6404/index009a.html
http://www.dsnw.ne.jp/~comet/hero/joe.html
http://ja.wikipedia.org/wiki/%E3%82%B5%E3%82%A4%E3%83%9C%E3%83%BC%E3%82%B0009
Cassava Editor
CSVファイル(Comma Separated Value)を閲覧・編集する専用ソフトです。
作者のホームページ
https://www.asukaze.net/
窓の杜の紹介
http://www.forest.impress.co.jp/article/2001/09/28/cassavaeditor.html
紹介サイト
http://takuki.com/dennou/13-cassava.htm
特長
カンマ区切りだけでなく、タブ区切りのデータも読込めるため、エクセルからクリップボード経由でデータを貼り付けることができます。
書き出し時、ダブルクォーテーションを全てのデータにつけたり、文字列のみに付けたり、あるいはカンマを含むデータのみにつけたりすることができます。
Shift-JIS, EUC, JIS, Unicode, UTF-8の文字コードを読み書きできます。
エクスプローラで CSVファイルをクリックしたときに、Excel ではなく、Cassava で開くようにするには、WinXP の場合は、以下のようにします。
エクスプローラで、任意の CSVファイル を右クリックして、コンテキスト・メニューから、「プログラムから開く」→「プログラムの選択」と行きます。
右上の「ファイルを開くプログラムの選択」画面が出ますので、「参照」で、Cassava を指定して、「この種類のファイルを開くときは、選択したプログラムをいつも使う」にチェックを入れて「OK」とします。
もし、また Excel に戻したければ、同様にするだけなので簡単です。
(「ファイルを開くアプリケーションを変更する」の項を参照下さい。)
固定長ファイルとは
ファイルの行の文字数が決まっていて、その何桁目が何を意味するかを、「ファイル・レイアウト」で規定した様式です。
リレーショナル・データベースなども存在しない何十年も前から、コンピュータのデータ保存形式として標準的に用いられています。
Excelから固定長ファイルを作る方法
パソコンで作ったデータをホスト・コンピュータに渡すために、固定長ファイルにしたい場合が有ります。こんなとき、Excelの「名前を付けて保存」を使えば、簡単にできます。
右で、テキスト(スペース区切り)を指定するだけです。
拡張子が、prn となりますので、必要ならば、後で txt に修正します。
注意点:
- 「テキスト(スペース区切り)」で書き出す時は、セルの文字数ではなく、「書式」→「列」→「幅」で設定された文字数で切り捨てられます。従ってセルに登録した全ての文字を書き出したい場合は、自動設定などで、文字が隠れないようにしておく必要が有ります。
- 文字の横の桁は、256桁まで毎に分断されて保存されます。横に256桁以上続けたい場合は、後でテキスト・エディタなどを使って、矩形貼付けで編集する必要が有ります。
- Excelのセルの書式が明示的に「数値」になっている項目は、固定長で出力したとき、セルの幅より1桁少なくなります。このため、例えば、18桁固定長で出力したい場合は、Excelの「書式」→「列」→「幅」で、19としておく必要が有ります。
【補足】Excelの「セルの書式設定」で「数値」を選択した後、そのまま「表示形式」タブの「ユーザ設定」をクリックすると、設定した書式の明細情報が分かります。「数値」の場合は、「0_」と表示されていますね。この数字の右側の「_」の分が一桁減るのです。従って、書式を「数値」とせずに、「ユーザ設定」で「0」としておけば、Excelの幅と固定長出力した桁数は同じになります。
IKARI FixEditor
IKARI は、固定長ファイル及び、CSVファイルの閲覧を目的としたテキストビュワーです。編集機能もついています
作者のホームページ
http://becom.hp.infoseek.co.jp/
ベクターの紹介
https://www.vector.co.jp/magazine/softnews/030823/n0308233.html
窓の杜の紹介
http://www.forest.impress.co.jp/article/2003/09/08/ikari.html
特長
- 特定のファイルレイアウトを元に構成される固定長ファイルを、表形式で閲覧できます
- CSV形式のファイルにも対応しています
- 読み込んだデータに対し、ソート、検索、置換、非表示等、閲覧を支援する機能を持っています
- フィルタ機能により、コードなどを意味ある文字として表示できます
- 固定長ファイル、CSVファイルのコンバータとしても利用できます
- HTMLへの出力もできます
- データの編集、追加もできます
- クリップボード経由で、Excel等に区切ったデータを渡せます
- Excelと違って、勝手に数値扱いしません
注意:メモリ消費が多いため、大きなファイル(1MB〜)は開かない方が良いでしょう。
(2004年5月時点のバージョンで確認)
BASICの業務プログラムの項で紹介した、標準BOMファイル(固定長の部品表構成ファイル)をIKARIで読み込むと、下図のようになります。
固定長ファイルを Access に読み込む方法
MS-Access をお持ちの人は、ウィザードを使って簡単に固定長ファイルを読み込むことができます。
ファイルレイアウトの決まった固定長ファイルを何度も読み込むことがある場合は、ファイルレイアウトを保存しておくと、便利です。
操作は、ウィザードを使ってファイルレイアウトを定義した後、「完了」の直前に、「設定」を押して、「インポートの定義」を「保存」します。
こうしておけば、次回のインポートの時に、この「インポートの定義」を読み出せば、一々またフィールドの設定をやり直す必要はありません。
詳しくは、Access でお仕事 を参照下さい。
【補足】Excelに、レイアウトの決まった固定長ファイルを何回も読み込む時は、マクロを使ってフィールドの切り方と、文字属性を覚えこませます。