ExcelからエクスポートされたCSVファイルの処理

Microsoft ExcelのCSVエクスポートの癖に対処:BOM文字、ロケール固有のデリミタ、日付シリアル番号、数式アーティファクト、エンコーディング問題。

Real-World

詳細な説明

Excel CSVエクスポートの癖

Microsoft Excelは世界で最も一般的なCSVファイルのソースであり、パーサーを困惑させるいくつかの非標準的な動作を導入します。

Excel固有の問題

1. UTF-8 BOM(バイトオーダーマーク)

Excelで「CSV UTF-8として保存」すると、ファイルは3つの不可視バイト(EF BB BF)で始まります。これらのバイトにより、最初のカラムヘッダーがnameではなく\uFEFFnameとして読み取られます。

2. ロケール依存のデリミタ

ExcelはシステムのリストセパレータをCSVデリミタとして使用します。US/UKではカンマですが、ドイツ、フランスなどではセミコロンです。

3. 日付のフォーマット

Excelは日付を以下のように出力する場合があります:

  • フォーマットされた文字列:"1/15/2024"(システムロケールに依存)
  • シリアル番号:45306(保存前にセルが「標準」でフォーマットされている場合)

4. 数式アーティファクト

数式を含むセルは計算値としてエクスポートされますが、アーティファクトが残ることがあります:

  • ="001234" — Excelがテキスト解釈を強制するための先頭等号クォートパターン
  • #REF!#N/A#DIV/0! — エラー値がリテラル文字列として表示

5. セル内の改行

ExcelではAlt+Enterによるセル内改行が許可されています。これらはCSVではクォートされたフィールド内のリテラル改行として保持されます。

Excel CSV用の堅牢性チェックリスト

  • UTF-8 BOMのストリップ
  • デリミタの自動検出(カンマ vs セミコロン)
  • クォートされたフィールド内の二重クォートの処理
  • 複数行クォートフィールドのサポート
  • Excelシリアル日付の検出と変換
  • 数式プレフィックスのトリム
  • Excelエラー値のnullへのマッピング

ユースケース

アップロードされるファイルの80%がExcelから来るSaaSアプリケーションのCSVインポートウィザードを構築する場合に使用します。インポーターはユーザーの介入なしにすべての一般的なExcelエクスポートの癖を処理する必要があります。

試してみる — CSV ↔ JSON Converter

フルツールを開く