CSVをJSONに、JSONをCSVに変換します。セルの中のカンマや改行、Shift_JISのファイルもそのまま読み込めて、結果はExcelで文字化けしないBOM付きUTF-8で保存できます。変換はすべてブラウザの中だけで行い、データはどこにも送りません。
表計算ソフトや業務システムから書き出したCSVをJSONに変えてプログラムやAPIのテストに使う、APIのレスポンス(JSON)をCSVにしてExcelで集計する、といった変換をブラウザだけで行います。顧客名簿や売上データのように外部のサイトへ貼り付けにくいものでも、データは端末の外に出ません。
セルの中のカンマや改行を1つのセルとして扱い、区切り文字も自動で判定します。JSON→CSVでは、入れ子を address.city のような列に展開し、{"items": […]} のように内側にある配列も見つけて取り出します。
ExcelのCSVが文字化けする理由:日本語版のExcelは、印のないCSVをダブルクリックで開くとShift_JISとして読みます。UTF-8のファイルの先頭に EF BB BF の3バイト(BOM)があると、ExcelはUTF-8だと判断して正しく開きます。古い基幹システムにはBOMを読み違えるものやShift_JISしか受け付けないものもあるので、渡す先に合わせて選んでください。
Shift_JISにない文字:絵文字や一部の漢字(「𠮷」など)は保存すると「?」に置き換わるので、該当した文字を警告に表示します。
郵便番号と電話番号は「列ごと」に型を決める:0600001 と 1000001 が同じ列にあるとき、セルごとに判定すると文字列と数値が混ざります。このツールは列全体を見て、1つでも数値にできない値があれば、その列はすべて文字列にします。16桁以上の整数(注文番号やIDなど)も、JavaScriptの数値では下の桁が丸められるので文字列のまま残します。1.10 のような小数は末尾の0も書かれたとおりに出力します。
CSVの決まりごと:標準的な形はRFC 4180にまとめられています。カンマ・改行・ダブルクォートを含むセルは全体を " で囲み、セルの中の " は "" と2つ重ねます。
Excelで開くと値が変わることがある:Excelは開いた時点で 0123 を 123 に、12桁以上の数字を 1.23E+11 のような指数表示に、1-2 を日付に変えてしまいます。「先頭の0と長い数字をExcelでも保つ」を選ぶと、該当するセルを ="0123" という数式の形で出力します。ただしこの形はExcel向けなので、ほかのシステムに読み込ませるCSVでは使わないでください。
CSVインジェクション:=・+・-・@ で始まるセルは、Excelが数式として扱うことがあります。外部から集めたデータ(問い合わせフォームの内容など)を配布するCSVにする場合は、「数式として実行されないようにする」で先頭に ' を付けると安全です。普通の数値(-5 など)には付けません。
col6 のような名前の列に入れます。該当する行の番号は警告に表示します。