なおすけの落書き帳

毎日がエブリデイ。

ExcelでCSVを読み込むときの注意

完全な備忘録。
Excelって気を利かせてるのかそうじゃないのかよくわからない

やりたいこと

CSVExcelで開いて、xlsxファイルにコピペしたい。ただそれだけ。
ただし、CSVのデータには001といったような、0埋めした数字も入っています。

CSVの仕様をざっくりと

CSVComma Separated Valuesの略称で、RFC4180*1で言及されており、公式仕様とみなされています。
ただし、公式仕様として標準化はされていません。

CSVとは名称のとおり、カンマ区切りのデータの集合体です。
一般的なデータはこんなかんじ。

"id","姓","名","生年月日","アカウント名"
"1","友利","奈緒","1990/08/30","ntomori"
"2","乙坂","有宇","1990/01/01","yotosaka"
"3","西森","柚咲","1990/12/31","ynishimori"

データの横を行、縦を列と呼び、""で囲まれた文字が値です。

値を""で囲むことを省略することもできます。
ただし、このときは条件として「値に",、制御文字を含まない」ことが必要です。

Excelの挙動

入力データはこのようなものであるとします。

1,hogehoge.txt,2015/01/01,001
2,foobar.txt,2015/01/02,002,
:
100,piyopiyo.txt,2015/12/31,100

Excelに読ませるとどうなるかというと…
(csv作るのが面倒だったので、2列目、3列目は固定文字列にしています) f:id:naosuke2dx:20151216135351p:plain:w200
このように、勝手に値が変えられます。
Dの列を文字列にしたとしても、0埋めされません。
これをこのままxlsxファイルに流してもただの値としてしか出ません。

どうするのか

csvファイルを開かずに、新規(新規じゃなくてもいいけど)でxlsxファイルを開きます。
その後、データタブから、テキストからインポートをクリック。
対象のCSVファイルを開きます。
f:id:naosuke2dx:20151216141300p:plain:w200
f:id:naosuke2dx:20151216141334p:plain:w200
次へ
f:id:naosuke2dx:20151216141353p:plain:w200
区切り文字にカンマを追加
f:id:naosuke2dx:20151216141921p:plain:w200
0埋めしている列を文字列として扱うよう設定。完了
f:id:naosuke2dx:20151216142001p:plain:w200

できたー
f:id:naosuke2dx:20151216142616p:plain:w200

おわりに

Excelさん、お願いだから邪魔をしないで。