🌙

Excelに壊されないCSVを作るツール「csv→safe」を作った

に公開

Excelに壊されないCSVを作るツール「csv→safe」を作った

ExcelでCSVを開いたときに、

  • 郵便番号や電話番号の 先頭ゼロが消える
  • 2024-01-01 のような値が 日付に変換される
  • 大きな数字が 指数表示(1.23E+15 のような形式)に変換され、保存すると壊れる

といった経験はありませんか?

これは Excel がCSVを開く際に
値の型を勝手に推測して変換してしまうことが原因です。
業務でCSVを扱っていると、意外と頻繁に踏む“罠”だと思います。

そこで今回、
Excelに壊されないCSVを作る無料ツール
csv→safe」を作りました。

👉 https://tools.tsukibit.com/csv2safe/

csv→safe でできること

使い方はとてもシンプルです。

  1. CSVを 貼り付けるファイルを選択
  2. 変換ボタンを押す
  3. 安全なCSVをダウンロード

csv→safe は、CSVの全フィールドを必ず "..." でクォートします。
これにより、Excelはすべてを「文字列」として扱い、
自動変換によるデータ破損を防げます。

対応しているポイントは以下です。

  • UTF-8(BOM付き / なし)
  • Shift_JIS(CP932)
  • 大容量CSVの警告表示
  • 先頭100行のプレビュー
  • すべての処理はブラウザ内で完結(サーバー送信なし)

なぜ「全列クォート」なのか

ExcelでCSVを開くと、値の内容によっては次のような変換が起こります。

  • 001234512345(先頭ゼロが消える)
  • 2024-01-01 → 日付として変換される
  • 12345678901234561.23457E+15(指数表示)

特にこの 1.23E+15 のような指数表示は、
見た目は数字に見えても、保存し直すと元の桁数が失われ、
元の値に戻せなくなることがあります。

ExcelでCSVが壊れる理由はとても単純で、

Excelが「これは数値」「これは日付」と勝手に判断する

からです。

そこで一番確実なのが、
すべての列を明示的に文字列として扱わせること。

たとえば、こんなCSVです。

"00123","2024-01-01","0123456789"

これなら、

  • 先頭ゼロは消えない
  • 日付に変換されない
  • 保存しても壊れない

csv→safe は、この処理を確実に行うことだけに特化したツールです。

作るときに意識したこと(少しだけ技術の話)

小さなツールですが、業務で安心して使えるように、
いくつか気をつけた点があります。

  • CSVの解析には PapaParse を使用し、
    クォートや改行を含むCSVにも対応
  • 文字コードは 無理に自動判定しない設計
    (BOM付きUTF-8のみ自動、それ以外は明示的に選択)
  • ファイル入力時にCSV構造を壊さないよう、
    安易な trim() を使わない
  • ダウンロード用の object URL は revoke して
    メモリリークを防止

「小さいツールでも、事故りにくくする」ことを目標にしました。

tsukibit tools について

csv→safe は、個人で作っている tsukibit tools のひとつです。

  • paste→join
    改行区切りのテキストを SQL の IN句や JSON 配列に変換
  • md→text
    Markdown をプレーンテキストに変換

いずれも 無料・ブラウザ内完結で使えます。

おわりに

Excel × CSV は避けて通れない組み合わせですが、
「壊れないCSVを用意する」 だけで、かなりの事故を防げます。

先頭ゼロの消失や日付変換だけでなく、
大きな数値が 1.23E+15 のような指数表示に変換される問題も、
csv→safe ならまとめて防ぐことができます。

同じような悩みを持っている方の助けになれば嬉しいです。
業務でCSVを扱う機会があれば、ぜひ一度使ってみてください。

👉 https://tools.tsukibit.com/csv2safe/

Discussion