web-dev-qa-db-ja.com

Excel 2007で改行を含むCSVをインポートする

検索結果をCSVファイルにエクスポートして、Excelで開く機能に取り組んでいます。フィールドの1つは、改行、コンマ、引用などを含むフリーテキストフィールドです。これに対処するために、フィールドを二重引用符( ")で囲みました。

ただし、データをExcel 2007にインポートし、適切な区切り文字を設定し、テキスト修飾子を二重引用符に設定すると、改行は改行で新しいレコードを作成します。テキストフィールド全体が表示されるはずです単細胞。

また、CR/LF(\ r\n)を単にCR(\ r)に置き換え、再びLF(\ n)に置き換えようとしましたが、運はありません。

他の誰かがこの動作に遭遇しましたか?その場合、どのように修正しましたか?

TIA、
-J

編集:
これは、問題を再現するために手で書いた簡単なファイルです。

ID、名前、説明
"12345"、 "Smith、Joe"、 "Hey。
私の名前はジョー。"

これをExcel 2007にインポートすると、ヘッダー行と2つのレコードになります。 「Smith、Joe」のコンマが適切に処理されていることに注意してください。問題を引き起こしているのは改行だけです。

104
jeremyalan

私はついに問題を発見しました!

ASCIIやUTF-8ではなく、Unicodeエンコードを使用してファイルを作成していたことがわかりました。 FileStreamのエンコーディングを変更すると、問題が解決するようです。

すべてのご提案ありがとうございます!

24
jeremyalan

Excel(少なくともXP上のOffice 2007では)は、CSVファイルをインポートするには、[ファイル]-> [開く]メニューから開くか、エクスプローラーでファイルをダブルクリックするかによって動作が異なります。

UTF-8エンコードのCSVファイルがあり、いくつかのセルに改行が含まれています。このファイルをExcelの[ファイル]-> [開く]メニューから開くと、「CSVのインポート」ウィザードがポップアップし、ファイルを正しくインポートできません。引用符で囲まれていても、改行は新しい行を開始します。エクスプローラーウィンドウでこのファイルをダブルクリックしてこのファイルを開くと、ウィザードの介入なしで正しく開きます。

46
J Ashley

提案された解決策はどれも私にとってはうまくいきませんでした。

実際に動作するもの(エンコードを使用):

Csvファイル(エディターで開く)からデータをコピーして貼り付け、「列内のテキスト」を実行します->動作しません、大丈夫です。

次のタブに移動して、もう一度コピー/貼り付けします(クリップボードに既にあるものと同じもの)->自動で機能します。

30
sdplus

これを手動で行う場合は、LibreOfficeをダウンロードし、LibreOffice Calcを使用してCSVをインポートします。これは、私が試したどのバージョンのExcelよりもはるかに優れた機能であり、後でExcelに転送する必要がある場合は、必要に応じてXLSまたはXLSXに保存できます。

しかし、Excelにこだわってより良い修正が必要な場合は、方法があるようです。それはロケールに依存しているようです(私の謙虚な意見ではばかげているようです)。 Excel 2007はありませんが、Excel 2010があり、例を示します。

ID,Name,Description
"12345","Smith, Joe","Hey.
My name is Joe."

動作しません。メモ帳で作成し、[名前を付けて保存...]を選択し、[保存]ボタンの横でエンコードを選択できます。提案どおりUTF-8を選択しましたが、運がありません。ただし、コンマをセミコロンに変更するとうまくいきました。私は他に何も変更しませんでした。そのため、サンプルを次のように変更し、メモ帳で保存するときにUTF-8エンコードを選択しました。

ID;Name;Description
"12345";"Smith, Joe";"Hey.
My name is Joe."

しかし、キャッチがあります!唯一の方法は、CSVファイルをダブルクリックしてExcelで開く場合です。テキストからデータをインポートしてこのCSVを選択しようとすると、引用符で囲まれた改行でまだ失敗します。

しかしanother catchがあります!作業フィールドの区切り記号(元の例ではコンマ、私の場合はセミコロン)は、システムの地域設定([コントロールパネル]-> [地域と言語]で設定)に依存するようです。ノルウェーでは、コンマが小数点区切り文字です。 Excelはこの文字を避け、代わりにセミコロンを好むようです。私は英国英語ロケールに設定された別のコンピューターにアクセスできますが、そのコンピューターでは、カンマ区切り記号を使用した最初の例は正常に機能し(ダブルクリックのみ)、セミコロンを使用したものは実際に失敗します!相互運用性のために。このCSVをオンラインで公開し、ユーザーがExcelを使用している可能性がある場合、両方のバージョンを公開し、どのファイルが正しい行数を提供するかを確認することを提案する必要があると思います。

したがって、これを機能させるために収集できたすべての詳細は次のとおりです。

  1. ファイルはBOMを使用してUTF-8として保存する必要があります。これは、UTF-8を選択したときにメモ帳が行うことです。 BOMなしでUTF-8を試しました(Notepad ++で簡単に切り替えることができます)が、ドキュメントをダブルクリックすると失敗します。
  2. コンマまたはセミコロン区切り文字を使用する必要がありますが、地域の設定で小数点区切り文字を使用することはできません。おそらく他のキャラクターも機能しますが、私はどれがわからないのでしょう。
  3. 改行を含むフィールドは "文字で引用する必要があります。
  4. テキストフィールドとレコード区切りの両方で、Windowsの行末記号(\ r\n)を使用しました。
  5. ファイルをダブルクリックして開く必要があります。テキストからのデータのインポートは機能しません。

これが誰かを助けることを願っています。

24
ketil

簡潔な答え

改行/改行文字を削除します(\n with Notepad ++)。 Excelは、キャリッジリターン文字(\r)を認識して、レコードを分離します。

ロングアンサー

前述のように、CSVフィールド内では改行文字がサポートされていますが、Excelはそれらを常に適切に処理するとは限りません。サードパーティのCSVでも同様の問題に直面しました。エンコードの問題はあるかもしれませんが、エンコードの変更では改善されませんでした。

私のために働いたのは、すべての改行文字(\n)を削除することでした。これは、レコードがキャリッジリターンと改行(CR/LF)の組み合わせで区切られていると仮定して、フィールドを1つのレコードに折りたたむという効果があります。その後、Excelはファイルを適切にインポートし、改行で新しいレコードを認識します。

明らかな解決策は、最初に実際の改行(\r\n)を一時的な文字の組み合わせに置き換え、改行(\n)を選択する分離文字(セミコロンファイルのコンマなど)に置き換えてから、一時的な文字を適切な改行に再度置き換えます。

6
Lilienthal

フィールドの先頭にスペースが含まれている場合、Excelは二重引用符をテキスト修飾子として無視します。解決策は、コンマ(フィールド区切り記号)と二重引用符の間の先行スペースを削除することです。例えば:

壊れた:
名前、タイトル、説明
「ジョン」、「ミスター」、「私の詳細な説明」

ワーキング:
名前、タイトル、説明
「ジョン」、「ミスター」、「私の詳細な説明」

5
Jeremy

J Ashleyのコメントに対する+1。私もこの問題に遭遇しました。 Excelには以下が必要であることがわかります。

  • 引用符で囲まれた文字列内の改行文字(「\ n」)

  • 各行間のキャリッジリターンと改行。

「テスト」、「複数行アイテム\ n複数行アイテム」\ r\n「Test2」、「複数行アイテム\ n複数行アイテム」\ r\n

メモ帳++を使用して、各行を適切に区切り、文字列で改行のみを使用しました。空のExcelドキュメントに複数行のエントリを作成し、メモ帳++でcsvを開くことでこれを発見しました。

4
Iventio

誰かがこのスレッドを偶然見つけて、ここで決定的な答えを探しているなら(LibreOfficeに言及した人の功績:

1)LibreOfficeをインストールする2)Calcを開いてファイルをインポートする3)txtファイルのフィールドがで区切られ、「4)ODSファイルとして保存する5)ExcelでODSファイルを開く6).xls(x)として保存する7)完了8)これは私にとって完璧に機能し、BIGTIMEを救ってくれました!

2
Rock Rico

Notepad ++に貼り付け、ANSIで[エンコード]> [エンコード]を選択し、もう一度すべてコピーしてExcelに貼り付けます:)

2
Aaron Dake

フランスの地域設定を使用したWinXPでのExcel 2010の経験

  • インポートされたcsvの区切り文字は、地域設定のリスト区切り文字に対応する必要があります(私の場合)
  • エクスプローラーからファイルをダブルクリックする必要があります。 Excelから開かないでください
2
pingouinshark

同様の問題がありました。 MySQLにTwitterデータがいくつかありました。データには、ラインフィード(LFまたは\ n)が含まれています。 MySQLデータをExcelにエクスポートする必要がありました。 LFは、csvファイルのインポートを台無しにしました。だから私は次のことをしました-

1. From MySQL exported to CSV with Record separator as CRLF
2. Opened the data in notepad++ 
3. Replaced CRLF (\r\n) with some string I am not expecting in the Data. I used ###~###! as replacement of CRLF
4. Replaced LF (\n) with Space
5. Replaced ###~###! with \r\n, so my record separator are back.
6. Saved and then imported into Excel

注-CRLFまたはLFの交換中は、[チェック済み]を忘れないでください(\ n、\ r、\ t ...チェックボックス[ダイアログボックスの左下を見る)

1
Dibs

Googleスプレッドシートを使用して、CSVファイルをインポートします。

次に、それをエクスポートしてExcelで使用できます

1
Mazzy

改行を含むセルを含む新しいシートを作成し、csvに保存してから、行末文字を表示できるエディター(notepad ++など)で開きます。そうすることで、セルの改行がLFでコード化されているのに気づくでしょう。一方、「実際の」行末はCR LFでコード化されています。これで、Excel用の「正しい」csvファイルを生成する方法がわかりました。

0
depassage

ちょうど私のために働いたのは、インポートがcsv形式ではなくテキスト形式として行われるという条件で、Excelに直接インポートすることです。 M /

0
Martin

これは、csvを使用してExcelでファイルを開くMacで機能しました。

pythonを使用してcsvファイルを書き込みます。

data = '"セルa1\rの最初の行セルa1\rの2行目セルa1の3行目"、 "セルb1"、 "セルc1の1行目\ rセルc1の2行目\ n" 1行目セルa2 "\ n '

file.write(data)

0
2003G35

二重引用符内の改行は、CSV標準に従って完全に問題ありません。 Excelでの改行の解析は、リスト区切り文字のOS設定に依存します。

  1. Windows:リストの区切り文字をコンマに設定する必要があります(地域と言語"形式"詳細)ソース: https://superuser.com/questions/238944/how-to-force-Excel-to-open- csv-files-with-data-arranged-in-columns#answer-633302

  2. Mac:地域を米国に変更する必要があります(その後、手動で他の設定を好みに戻します)ソース: https://answers.Microsoft.com/en-us/mac/forum/macoffice2016-macexcel/line -separator-comma-semicolon-in-Excel-2016-for/7db1b1a0-0300-44ba-ab9b-35d1c40159c6 (NewmanLeeの回答を参照)

再試行する前に、Excelを完全に閉じることを忘れないでください。

私は問題をうまく再現し、MaxとWindowsの両方で上記を使用してそれを修正することができました。

0
David Avikasis

区切り記号をコンマ(、)ではなくTAB(\ t)に置き換えます。次に、エディター(メモ帳など)でファイルを開き、そこからコンテンツをコピーして、Excelファイルに貼り付けます。

0
Ionut

CSVを扱う場合、Excelは非常に壊れています。 LibreOfficeの方がはるかに優れています。だから、私はそれを見つけました:

  • ファイルはBOMを使用してUTF-8でエンコードする必要があるため、以下のすべての点でこれを考慮してください
  • 最良の結果は、ファイルエクスプローラーから開くことで得られます。
  • Excel内から開くと、2つの結果が考えられます。
    • ASCII文字のみの場合、ほとんどの場合機能します
    • ASCII以外の文字がある場合、改行が乱れます
  • OSの地域設定で設定されている小数点に大きく依存しているようですので、正しいものを選択する必要があります
  • OSとOfficeのバージョンに応じて異なる動作をする可能性があります
0
undefined

また、この問題がありました。つまり、引用文字列にLFが含まれるcsvファイル(コンマ区切り、二重引用符区切りの文字列)です。これらはダウンロードされたSquareファイルです。データをインポートしましたが、テキストファイルとしてインポートする代わりに、「HTMLから」インポートしました。今回は、引用符付き文字列のLFを無視しました。

0
user3861859

私の場合、CSVをnotepad ++で開き、最初の行としてSEP=","を追加すると、問題なくExcelで改行とutf-8でCSVを開くことができます

0
adax2000

MacOSでは、Numbersを使用してみてください

Mac OSにアクセスできる場合、AppleスプレッドシートNumbersが適切に機能することがわかりました。 Excelで処理できなかった複雑な複数行のCSVファイルを選択解除すること。 .csvをNumbersで開き、Excelにエクスポートするだけです。

0
Tim