Excel 用の CSV ファイルを生成する際、値の中に改行を入れる方法 質問する

Excel 用の CSV ファイルを生成する際、値の中に改行を入れる方法 質問する

Excel 用のファイルを生成する必要がありますが、このファイル内の値の一部には複数行が含まれています。

そこには英語以外のテキストも含まれているため、ファイルは Unicode である必要があります。

私が今生成しているファイルは次のようになります: (UTF8 で、英語以外のテキストが混在し、行数が多い)

Header1, Header2, Header3
Value1, Value2, "Value3 Line1
Value3 Line2"

複数行の値は二重引用符で囲まれ、その中に通常の改行が含まれていることに注意してください。

私が Web で見つけた情報によると、これは動作するはずなのですが、少なくとも Excel 2007 および UTF8 ファイルでは動作しません。Excel は 3 行目を最初のデータ行の 2 行目ではなく、データの 2 行目として扱います。

これは顧客のマシンで実行する必要があり、顧客の Excel のバージョンを制御できないため、Excel 2000 以降で動作するソリューションが必要です。

ベストアンサー1

スペース文字は、データの一部であるフィールドの先頭にのみ配置する必要があります。Excel は先頭のスペースを削除しません。見出しとデータ フィールドに不要なスペースが残ります。さらに悪いことに、"3 列目の改行を「保護」するはずの は、フィールドの先頭にないため無視されます。

ファイルに非 ASCII 文字 (UTF-8 でエンコード) が含まれている場合は、hex EF BB BFファイルの先頭に UTF-8 BOM (3 バイト) が必要です。そうしないと、Excel はデータを UTF-8 ではなくロケールの既定のエンコード (例: cp1252) に従って解釈し、非 ASCII 文字は破棄されます。

以下のコメントは Excel 2003、2007、2013 に適用されます。Excel 2000 ではテストされていません。

Windows エクスプローラーでファイルの名前をダブルクリックしてファイルを開くと、すべて正常に動作します。

Excel 内から開くと、結果は異なります。

  1. ファイルには ASCII 文字のみが含まれています (BOM はありません): 動作します。
  2. ファイル内に非ASCII文字(UTF-8でエンコード)があり、先頭にUTF-8 BOMがあります。データがUTF-8でエンコードされていると認識されますが、csv拡張子は無視され、テキストインポートはウィザードではありません残念ながら、その結果、改行の問題が発生します。

オプションには以下が含まれます:

  1. Excel 内からファイルを開かないようにユーザーをトレーニングしてください :-(
  2. XLSファイルを直接書き込むことを検討してください...Python/Perl/PHP/.NETなどでそれを実行するためのパッケージ/ライブラリがあります

おすすめ記事