web-dev-qa-db-ja.com

一部のコンテンツフィールドにカンマを含むCSVファイルをExcelにインポートするにはどうすればよいですか?

Excelで [〜#〜] csv [〜#〜] ファイルをインポートするにはどうすればよいですか?

ファイル

CSVであると主張するファイルがあります。これには10個のフィールドが含まれ、すべてが二重引用符で囲まれています(はい、日付と数値も含まれます)。これらのフィールドの2つまたは3つは、コンマを含みます。ただし、これらのフィールドのデータも引用符で囲まれています。

問題

このファイルを開こうとすると、Excelは引用符を完全に無視し、データの一部であると見なします。

したがって、コンマを含むフィールドを複数の列に分割します。

これは、少なくとも私にとっては悪いことです。

データの例

 "20051"、 ""、 "2009 Sep 30 02:53:23"、 "SOMETEXT"、 ""、 "5000"、 "2000000"、 "2008-99999--999​​99、2008-unk- unk」、「191-SOMETEXT-SOMETEXT、192-SOMETEXT-SOMETEXT、193-SOMETEXT-SOMETEXT、194-SOMETEXT-SOMETEXT、195-SOMETEXT-SOMETEXT、196-SOMETEXT-SOMETEXT」、「45-SOMETEXT-SOMETEXT、1162- SOMETEXT-SOMETEXT、140-SOMETEXT-SOMETEXT、141-SOMETEXT-SOMETEXT "
" 20052 "、" SOMETEXT "、" 2009 Sep 08 07:56:50 "、" SOMETEXT "、" "、" 50000 " 、「5000000」、「2007-99999-99999」、「146-SOMETEXT-SOMETEXT、145-SOMETEXT-SOMETEXT、147-SOMETEXT-SOMETEXT、148-SOMETEXT-SOMETEXT」、「103-SOMETEXT-SOMETEXT、1131-SOMETEXT- SOMETEXT "

何を試しましたか?

デリミタなどを指定するためにインポート機能を使用しましたが、これは役に立たないようです。

「Text Delimiter」を二重引用符から「{none}」に切り替えて、もう一度戻しました。これは最初の列にのみ影響するようです。他の列をクリックして、それぞれにこの設定を適用できる場合、これは合理的です。しかし、これはそうではなく、これは列全体で機能するように意図されているようです。

他に何を試すことができますか?

13
Rory Becker

あなたの問題を再現する簡単なテストを試しました。

Word(スマートクォートを使用)で1行のCSVをtest.csv“ 123”、“ 4,5,6”として作成し、Excelで開きました。

「と」を「」に置き換えてみてください


あなたのサンプルを試してみると、Excelはフィールド間のスペースが好きではないことに気づきました

例えばの代わりに

"20051", "", "2009 Sep 30 02:53:23", ...

あなたが欲しい

"20051","","2009 Sep 30 02:53:23",...

まともな正規表現の置き換えはそれで処理できるはずです

Find:    |("[^"]*",) |
Replace: |\1|

(ビジュアルキューのパイプ文字のみ)

または、アクセスできる場合は、単に.Netコードを変更します;-)

また、Arjan 指摘 のように、ファイルをUTF-8からANSIに変換して、セルA1にBOMとその周囲のqoutが含まれないようにする必要がある場合もあります。

ANSIエンコードされたCSVが国際文字を処理せず、UTFエンコードされたCSVがExcelで適切に処理されないCatch 22に遭遇しました。 CSVのメンテナンス中に解決策が見つかりませんでした。国際的な文字のサポートが必要な場合、XML(またはネイティブXLS)形式が唯一の方法であるように見えますが、簡素化は犠牲になります。

13
user13448

この問題は何年もの間私を悩ませてきました。私は解決策を発見しました、そしてそれは上記の答えで暗示されていますが、明確に綴られていません。

カンマの後のスペースです!

これはExcelにインポートされません。

HEADER1, HEADER2
"1,000", "2,000"

ながら

HEADER1,HEADER2
"1,000","2,000"

動作します!

9
Mark Milbourne

また、無料の CSVEd を試すこともできます。

2
Alan B

このファイルを開こうとすると、Excelは引用符を完全に無視し、データの一部であると見なします。したがって、コンマを含むフィールドを複数の列に分割します。

Lumbarius suggested のようなスマートクォートを誤って使用しておらず、Windowsを使用している場合:mightbe地域設定によります。ダブルクリックするか、[ファイル]"[開く]を使用すると、Excelは詳細を要求せず、単にこれらの設定を使用します。

それでも、インポート機能を(手動で)手動で呼び出すことで問題なく機能するはずなので、地域設定を変更しても問題が解決しないと思います...

2
Arjan

私はこれを使用してこれを行うことができました:

a,b,c,"=""(1,2,3)"""

4つの列が表示されます。

|  a  |   b   |   c   |   (1,2,3)   |
1
johnb

ここで答えを追加するだけです。CSVファイルのCOMMASの後のスペースに注目してください。データに引用符で囲まれたフィールドがある場合、Excelはこれらを好みません。

Excelのいいね(4列のデータ):

a, b, c, d

しかし、好きではありません(データの3列):

a, "b, c", d

それは好きです(3列のデータ):

a,"b, c",d
1
DocOc

今日、この問題に遭遇し、私にとっても有効な解決策を見つけました。

私の環境/コンテキスト:二重引用符とコンマの両方を含むいくつかの(フォーム)質問を含むWebページがあります。質問と回答の両方がデータベースから取り出され、レポート作成のためにExcelファイルに書き込まれます。

上記と同じ問題がありました。二重引用符とカンマの両方を含む質問がExcelで複数の列に分割されていました。

私の目的のために、二重引用符の代わりに2つの単一引用符を使用がトリックを行いました。

->ウェブサイトでは、2つの一重引用符はサイト訪問者にとって二重引用符のように見えます

-> Excelファイルでも、レポートデータを表示するユーザーにとって、2つの一重引用符は二重引用符のように見えます

このソリューションがすべての人に役立つわけではないことを私は理解していますが、うまくいけば誰かの助けになるでしょう。

1
Gerald

ファイルの文字エンコードを確認しましたか?文字エンコードをUTF-8に設定してみてください。

notepad2 を使用して、文字エンコーディングを変更できます。

1
Josh Comley

それを行う別の方法:

  1. LibreOfficeまたはOpenOffice Calcでファイルを開きます。
  2. UTF-8、カンマ区切りなどの正しいインポートオプションを設定します。
  3. ファイルをodsまたはxlsとして保存します
  4. Excelで新しいファイルを開きます。

このように、UTF-8のような正しいエンコーディングを設定できます。これは、Excelの多くの(すべて?)バージョンがBOMなしでは正しく処理できず、フィールド内の一部のテキストを置き換える可能性がある正規表現を心配する必要がありません。あなたはそれに気づかない。