事例紹介

csvデータとは何かを、本気で考えて見る
~ Excel用データに非ず ~

誰でも知ってる「CSVファイル」・・・って何?

Excelのファイルなのか?

本来は汎用的な互換データ

かつてはA社のソフトウェアで作成したデータが、B社、C社で使えないのは当たり前でした。

しかし、他社のソフトウェアに乗り換えたら、既存のデータを全て捨てなくてはならないというのは余りに利用者を考慮していない、ということで、ファイルの”互換”が重視されるようになっていきます。

CSV形式データもそんな流れで、上下左右に区切る必要がある場合(表計算やデータベース)に汎用的に使える様、「カンマで区切られたら次のフィールド」という表現になっています。

多くの場合、csvファイルをWクリックすると、Excelが起動しますが、これはExcelをインストール時にCSVファイルのデフォルトアプリケーションをExcelに設定しているからです。

基本はテキストファイルなので、メモ帳などのエディタでもワープロでも・・・文字を扱えるソフトウェアならたいてい開くことができます。

 

Excelの「名前を付けて保存」で作る、CSVファイル

Excelの機能の1つに、「名前を付けて保存」があります。

これは、文字通りファイル名を変えて別のファイルとして保存する、という機能の他に、拡張子を変更(=ファイル形式の変換)もできるようになっています。

これを使ってCSV形式ファイルを選択すれば、セル単位でカンマに囲まれたテキストファイルに変換されます。

では、こうしてCSV形式で保存したデータは、どのように活用できるのでしょうか?

 

CSVファイルは、文字情報のみ

式や関数・ピボットテーブルは、全て文字化される

CSV形式ファイルは、メモ帳でも開ける”テキスト形式ファイル”、すなわち文字だけのファイルです。

文字以外、色の情報や罫線・式としての情報は一切含まれません。

従って、表として保存すれば、相対位置が変わらないことから、罫線がない状態で数字のみ同様に再現されます(式を排除したい場合に、よく使います)。

一方、式や関数は値化されていることから、再計算ができません。

つまり、計算が終わった「結果」として、変更をしたくない状態にして、汎用的な加工を想定しておくのがCSVファイルの役割と言えそうです。

 

表形式でないCSVファイル

以前相談を受けたことがありますが、Excelで作った請求書ファイルを、全てCSV形式に変更したと(ファイルサイズが圧倒的に小さくなります)。これはCSV形式ファイルだから、そのままExcelから読み込んで、元の請求書を再現したい、ということです。

しかし、「請求書」の見出し文字が入っていたり、日付や相手先名が思わぬところに入っていたりいなかったり、更に改ページした場合はご丁寧にフッタ/ヘッダまでページ単位で再現されていました。

こうなると、元のレイアウト情報が失われているので、戻すことは事実上不可能です。

 

 

二次加工想定でなければ、意味が無い

データとレイアウト情報は意味が異なる

htmlファイルに学ぶ、レイアウト表現

今見ているブラウザに表示されている文字列・画像などは、いずれも「html形式ファイル」という様式で記述されています。

htmlは、Webブラウザにレイアウトを定義するための様式です。

例えば”<br>”と記述すれば、改行を意味し、”<u>~</u>”と記述すれば、囲われた範囲に下線を引きます。

他にも表形式で表したり画像を挿入したりハイパーリンクを設定したり・・・といったことができます。

同様に、何かレイアウト(位置情報)を必要とするならば、同様の表現についての情報が必要です。

しかし、CSV形式ファイルにはそのような情報は含まれていません。

 

CSVファイルは互換してこその価値

他のソフトウェアとの互換とは

先の例で、A社のソフトウェアのデータが、B社、C社のソフトウェアで読めない、という例を引合いに出しましたが、一般的に互換性が求められるのは、「記入時はExcelだが、集計したらデータベースに集計し、最終的にはパワポ形式で印刷する」といった、異なる役割のソフトウェア間連携でしょう。

こうした互換を保つ場合の暗黙の了解としては、

  • 全ての行が同様の構造をしている
  • ヘッダは上部に1回だけ出現し、他はそれを共有する
  • カンマとカンマの間が1つの項目(フィールド)となるので、情報にカンマを含められない
  • やむを得ずカンマを入れる場合(数値の区切り文字など)は、全体を””でくくる

といったことが挙げられます。

 

互換させないCSVファイル

世の中には、他のソフトウェア(処理系)に勝手な処理をさせないためか、独自様式のCSV(と言えなくもないファイル)が存在します。

その特徴は、

  • 行によって項目数が異なる(項目を揃えるのが大変)
  • ヘッダが途中で何度も不規則に出現する(処理対象外にするのが大変)
  • 列によって””で囲ってあるところと層で無いところがある(揃えないと、機械的な処理ができない)
  • 途中で改行コードが入る(その結果、行によって構造が変わる)

といった状態で、所謂IT企業が作成するデータにこの傾向が見られます。

 

CSVファイルだからといって、Excelで処理できるとは限らない

例えば国内大手のショッピングモールサイトの売上データは、途中から””で囲われていたり、改行コードが入っていたり、途中で文字化けしていたり・・・と、機械的な処理が非常に難しいデータです。

他にも電力消費データがプランによって項目が異なっていたり、データだけ見ても処理できないような”CSVデータ”が多数存在します。

業務を自動化しようとする発想があるならば、予めこうした「形だけCSVファイル」ができないよう、ご留意下さい。Excelで開けば自動的に補正してくれる部分もありますが、その分欠落する情報も多いので、機械的な処理ができないケースが多いのです。