完全な備忘録。
Excelって気を利かせてるのかそうじゃないのかよくわからない
やりたいこと
CSVをExcelで開いて、xlsxファイルにコピペしたい。ただそれだけ。
ただし、CSVのデータには001
といったような、0埋めした数字も入っています。
CSVの仕様をざっくりと
CSVはComma 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列目は固定文字列にしています)
このように、勝手に値が変えられます。
Dの列を文字列にしたとしても、0埋めされません。
これをこのままxlsxファイルに流してもただの値としてしか出ません。
どうするのか
csvファイルを開かずに、新規(新規じゃなくてもいいけど)でxlsxファイルを開きます。
その後、データタブから、テキストからインポートをクリック。
対象のCSVファイルを開きます。
次へ
区切り文字にカンマを追加
0埋めしている列を文字列として扱うよう設定。完了
できたー
おわりに
Excelさん、お願いだから邪魔をしないで。