CSV・文字コード

CSVの値にカンマがあり列がずれる場合

CSVの値そのものにカンマが含まれていると、正しく引用されていない行だけ列数が増え、Excelで右へずれて表示されます。カンマをすべて削除するのではなく、CSVの引用符ルールと問題行を確認します。

値の中のカンマが列ずれを起こす例

次の行では、住所内のカンマが区切りとして解釈され、4列に見えます。

1001,山田太郎,東京都千代田区,1-1

住所全体を1つの値にするなら、一般的なCSVではダブルクォートで囲みます。

1001,山田太郎,"東京都千代田区,1-1"

値の中にダブルクォート自体を含める場合は、通常 "" と2つ重ねて表します。RFC 4180では、カンマ、改行、ダブルクォートを含むフィールドをダブルクォートで囲む形式が示されています。

CSV診断で問題行を確認する

CSVの文字コードと区切り文字を確認する方法で原本を選びます。CSV_COLUMN_MISMATCH が表示された場合、基準となる列数と異なる行があります。CSV_PARSE_WARNING は引用符や構造に注意が必要な可能性を示します。

診断結果だけで自動修復は行いません。プレビューに示された行番号の前後を確認し、見出しで想定される列数と比較します。

安全な確認手順

  1. 元CSVを複製し、編集用コピーを作る
  2. 文字コードと区切り文字を確認する
  3. 列数が違う最初の行を探す
  4. 値の中のカンマ、改行、ダブルクォートを確認する
  5. 作成元の仕様と照合する
  6. 可能なら元システムのエクスポート設定を修正して再出力する
  7. 修正版を再診断し、全行の列数を確認する

Excelで一度開いて保存すると、自動変換された日付や先頭ゼロを元に戻せないことがあります。原本のCSVをテキストとして確認し、上書きしないでください。

手作業で直す場合

少数行だけで、正しい列構成が明確な場合に限り、テキストエディターで値全体をダブルクォートで囲みます。

  • 開始と終了のダブルクォートを対にする
  • 値内のダブルクォートは2つ重ねる
  • 行末へ不要なカンマを追加しない
  • 改行を含む値は対応ソフトで正しく扱えるか確認する
  • 修正後に行数と列数を再確認する

大量の行を検索置換で直すと、正常な区切りまで変える危険があります。生成元へ修正を依頼できるなら、再出力を優先します。

1列表示とは分けて考える

すべてが1列になる場合は、Excelが区切り文字を認識していない可能性があります。CSVがExcelで1列になる場合の区切り文字確認を参照してください。

一部の行だけずれる場合は、区切り自体より、その行の引用符、カンマ、改行、列欠落を疑います。文字化けもある場合は、文字コードを正しく指定してから構造を確認します。

参考情報

CSV・文字コード

テーマを見る