mygems

CSVをExcelに変換

途中で何も変わらない、本物の.xlsxに。

  • 先頭のゼロを保持
  • 長いIDを丸めない
  • 数値は合計可能
  • アップロードなし

1.ファイルを開く

CSVまたはTSV。ここにドラッグするか、ファイルを選択してください。

作った理由

CSVをExcelで開くのは、中立な操作ではありません。Excelは各セルの意味を推測し、その推測が内容を壊します。郵便番号は先頭のゼロが消え、16桁の注文番号は15桁に丸められ、日付に似たものは日付に変わります。このツールは.xlsxを自分で書き出し、各列の型をすべての値から判定します。そのため、数値は合計できる数値として、数値に見えるだけのものは元のテキストのまま届きます。

できること

  • 列が数値かどうかを、サンプルではなくすべての値を読んで判定します。
  • 数値は本物の数値として、true/falseはExcelの論理値として書き出します。
  • 先頭にゼロがある列や15桁を超える列はテキストのままにし、ダウンロード前にどの列かを表示します。
  • 見出し行を固定して太字にし、フィルターを追加して、列幅を内容に合わせます。
  • 1,048,576行を超えるファイルは、Excelのシートあたりの上限なので、同じブックの複数のシートに分けます。

CSVをそのままExcelで開かない理由

Excelは開くときに変換し、その変換こそが破損の原因だからです。`00742`だったセルは742として保存され、そのまま保存し直せば742が書き込まれます。ブックを直接書き出せば、各セルの型は、ダブルクリックした瞬間のExcelの推測ではなく、確認できるルールで一度だけ決まります。

よくある質問

先頭のゼロは残りますか?
残ります。値が0で始まり、その後に数字が続く列は、すべてテキストで書き出されます。そのため00742は、ブックの中でも、そのコピーでも00742のままです。
数値の一部がテキストで保存されるのはなぜですか?
数量ではなく識別子だからです。郵便番号、電話番号、口座番号、注文番号などがそうです。Excelが保持できる有効桁数は15桁なので、16桁の数値は丸められてしまい、最後の桁が変わった識別子は別の識別子になります。すべてをテキストにしたい場合は、チェックボックスをオンにすると、何も変換されません。
非常に大きなファイルでも使えますか?
使えます。ただし、ブラウザのタブが使えるメモリの範囲までです。1,048,576行を超えるとブックに2枚目、3枚目のシートが追加されます。Excelの1枚のシートには、それ以上入らないためです。