ExcelとCSVの行き来で、値が壊れないようにする
先頭の0が消える、日付が勝手に変わる、文字が化ける。この3つの直し方
更新日:
何が起きているのか
CSVは値を並べただけの文字のファイルで、「これは文字列」「これは数値」という区別を持ちません。そのため、開いたソフトが中身を見て推測します。Excelの推測は、実務ではしばしば裏目に出ます。
代表的なのが、郵便番号の先頭の0が消える、商品コードが日付として表示される、長い数字が指数表示になる、の3つです。
先頭の0が消える
0120や0570で始まる番号、商品コード、会員番号は、数値と判断されると先頭の0が落ちます。CSVの中には残っているので、ファイルが壊れたわけではありません。
当サイトのExcelをCSVに変換は、数字に見える文字列を勝手に数値へ変えずに書き出します。Excelで開くときに「データ」タブから読み込み、その列を「文字列」として指定してください。
コードが日付になる
1-2や3/4のような値は、Excelが日付だと判断して「1月2日」に変えてしまいます。いったん変わると、元の文字列には戻せません。
防ぐには、読み込むときにその列を文字列として指定するのが確実です。すでに変わってしまったファイルは、元のCSVから読み込み直してください。
文字が化ける
日本語が化けるのは文字コードのずれです。CSVの文字コードを変換でBOM付きUTF-8に変換しておくと、Excelでダブルクリックしても化けません。相手のシステムがShift_JISを求める場合だけ、そちらへ変換します。
Shift_JISには絵文字や一部の漢字がありません。書けない文字があるときは、実行の前に画面でお知らせします。
行き来する前に、形を整えておく
列が多すぎて扱いにくいときはCSVの列を選ぶ・並べ替えるで必要な列だけにできます。重複した行はCSVの重複行・空行を削除で取り除けます。ファイルを渡す前に整えておくと、相手の手間も減ります。
ExcelへCSVを戻すときはCSVをExcelに変換を使ってください。ただし、元のExcelにあった罫線や数式は戻りません。
壊れていないかを、渡す前に確かめる
書き出したCSVは、そのまま渡す前に一度開いて、1行目の見出しと、番号の列を目で見てください。先頭の0が残っているか、日付の列が意図した形かは、数秒で分かります。事故のほとんどは、この確認を飛ばしたときに起きています。
件数が多い場合は、先頭と末尾の数行だけでも見ておくと、途中で列がずれていないかに気づけます。
やり取りの形を決めておく
同じ相手と繰り返しやり取りするなら、文字コードと区切り、列の順番を決めて文書に残しておくと、担当が変わっても同じところでつまずきません。
取り込むシステムがある場合は、その仕様書に書かれた形式に合わせるのが最優先です。見た目が同じでも、区切りや改行の違いで弾かれることがあります。
よくある質問
- Excelで開かずに中身を見られますか?
- CSVを表として見るで表として確かめられます。Excelの推測が入らないので、ファイルの本当の中身が分かります。
- 数式はCSVに残りますか?
- 残りません。CSVは値だけを持つ形式なので、数式のセルは計算結果の値になります。
- 複数のCSVを1つにまとめられますか?
- CSVを結合で結合できます。列の並びが同じファイル同士でお使いください。
- ファイルはどこかへ送られますか?
- 送られません。変換も確認も、すべてブラウザの中だけで行います。顧客名簿のような持ち出せないファイルでも扱えます。
この記事で使う道具
記事で紹介しているツールは、すべて登録不要・ブラウザ内で動きます。