Excel 2007での改行付きのCSVのインポート


129

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

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

また、CR / LF(\ r \ n)をCR(\ r)だけで置き換え、もう一度LF(\ n)だけで置き換えようとしましたが、うまくいきませんでした。

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

TIA、
-J

編集:
問題を再現するために手で書いた簡単なファイルを以下に示します。

ID、名前、説明
"12345"、 "スミス、ジョー"、 "ねえ。
私の名前はジョーです。"

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


Notepad ++でCSVファイルを確認したところ、すべてが正しいようです。カンマのある他のフィールドがあり、それらは適切にインポートされています。問題を引き起こしているのは改行だけです。
jeremyalan 2010

4
複数行データとExcelを含むUTF8 .csvファイルに問題があります。ファイルをGoogleドキュメントにアップロードし、それをGoogleシートで開いて、.xlsファイルとしてダウンロードするだけになりました。この方法で私にはうまくいきます。
creuzerm 2015

回答:


53

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

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


1
ダブルクリックと同じ設定を取得する方法はありますか?
Michiel Thalen、2015

7
それは本当です!おかしいですね。
デビッド

5
ドイツの地域設定を使用している場合、CSVでコンマ(、)の代わりにセミコロン(;)を使用して、ダブルクリックが機能するようにする必要があります...
user1859022

3
うまくいきませんでした。区切り文字として「、」を使用すると、ダブルクリックですべてを1つの列で開きました。「;」付き 区切り文字として、複数のレコードとしてインポートされた複数行テキストフィールドを除いて、正しくインポートされました。私はExcel 2010を持っています
Andrej Adamenko 2016年

2
@ user1859022ハンガリー語ロケールの場合は2倍にします。実際に小数点記号としてコンマを使用するロケールでは、ダブルクリックcsv openが正しく機能するためにフィールドセパレータとしてセミコロンを使用する必要があります
robotik

42

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

実際に機能するもの(エンコーディングを使用):

csvファイルからデータをコピーして貼り付け(エディターで開きます)、「列内のテキスト」を実行します->機能しません。

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


2
私の場合、これはある方法でうまくいきました:CSVを単一のレコードに正しく折りたたみましたが、改行を過ぎたフィールドのすべてのデータを削除しました。
リリエンタール2014年

1
これはうまくいきました、ExcelからCSVをインポートするときになぜそれがうまくいかないのですか?
Rafael Sisto 2015

1
これが機能することを確認できます。「テキストから列へ」コマンドを繰り返さなくても、別のシートにさらにデータを貼り付けることができます。これは、複数のファイルをインポートする必要がある場合に役立ちます。
アレックス

1
なぜこれは機能するが、CSVを開いたりテキストデータとして追加したりしても、適切な設定がすべて機能しないのはなぜですか。先端をありがとう。コピー/貼り付けチームは、データインポートチームと話し合う必要があります。
alexGIS 2016年

2
聖なるたわごと。これは本当にうまくいきます。そして、それはちょっと理にかなっています。「テキストから列へ」を作成するとき、Excelは設定を記憶し、自動変換します。テキストがすでに行に分割されている場合、行ごとに表示され、新しい行は無視されます。MSは、動作を維持するか、データを再スキャンするために、チェックボックスを含める必要があると思います。私は気にしない、...おかしくなったらうまくいく
user853710

28

これを手動で行う場合は、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を選択しようとしても、引用符で囲まれた改行で失敗します。

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

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

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

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


また、@ sdplusで言及されているトリックが機能するようです!最初に貼り付けて「テキストから列へ」操作を行うと、Excelで引用符とフィールド区切り文字を構成していると思います。2回目の貼り付けでは、この構成が使用され、構成に基づいてデータが列に正しく分割されます。しかし、これは非常に手動のアプローチのようです。
ketil、2015年

はい。テキストをインポートするか、列にテキストを入力するたびに、コピー/貼り付けが特定のセッションでどのように機能するかを再調整します。Excelを閉じるまで、作成した新しいブックにも適用されます。それもイライラすることがあります。特定のセパレータをインポートに使用すると、セルに文を貼り付けたいだけの場合でも、テキストでテキストが区切られます。タブをセパレータとしてインポートをやり直すか、Excelを再起動して停止する必要があります。
robotik

あなたのトリックは本当に機能しているようです。しかし、セミコロンはソリューションとは関係がないようです。問題は、地域の設定に応じて、ExcelがCSVファイルを異なる方法で処理することです。私はドイツ出身です。私にとっては、ExcelのCSVファイルには常にコンマではなくセミコロンがあります(これは、ドイツでは小数点の区切り文字がポイントではなくコンマであるためです)。実際の解決策は、Excelが他のすべてのテキストファイルとはまったく異なるCSVファイルを読み込むことです。したがって、引用の間に改行が含まれるCSVファイルは機能するようです。他のすべてのテキストファイルはサポートしていません。
マティーニビアンコ2017年

@Martini、はい、私はノルウェー語のExcelを使用しており、小数点記号としてカンマも使用しているため、これが地域設定にどのように依存するかについて述べました(ただし、ロケールとして参照しました)。多分私は明確にするために言い換えるべきです。
1

これはカンマが小数点記号である地域のすべての人々に対する答えです。これらの地域の場合、Excelでは数式引数の区切り文字として(の=FOO(1;2)代わりに=FOO(1,2))セミコロンも使用しますが、Excelがこれをファイル形式パーサーに適用することは明らかに正しくありません(他のプログラムがロケールに依存する標準ファイル形式を解析しますか??? )
リーム2017

25

ようやく問題が見つかりました!

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

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


29
ASCIIエンコーディングは私にとって(MacOSでは)問題を解決していないようで、先頭にスペースがなく、フィールドが引用されています。まったく同じドキュメントがGoogleドキュメントで正常にインポートされます。いらいらする。ところで、「Unicode」でエンコードされたテキストファイルなどはありません。Unicode(UTF-8、UTF-16、UTF-32など)の実装の1つである必要があります
Ben

11
解決策をありがとう。私はまだ答えが何であるか興味を持っていたので、Excelで改行を含むcsvを作成し、それが何を保存するかを確認してみました。Excelでは、セル内の新しい行に改行のみを使用していることがわかりました。同じcsvをメモ帳で作成しようとすると、改行にラインフィード+キャリッジリターンが使用されます。したがって、単一セルの改行の場合は、改行(LFまたは\ n)のみを使用し、キャリッジリターン(CRまたは\ r)を使用していないことを確認してください。Excelは両方を使用して行を終了します。
xr280xr

1
ASCIIエンコードでも問題は解決しませんでした
-Excel

1
MacintoshのOS Xの場合は、「Windowsカンマ区切り(csv)」として保存します。これにより、改行ではなく改行が追加されます。「特殊フォーマット」のフォーマットのドロップダウンメニューに表示されます。
taco 2014

どのUnicodeエンコーディングを使用する必要がありますか(UTF-8、UTF-16)?
Andrej Adamenko 2016年

7

短い答え

改行/改行文字を削除します(\nNotepad ++を使用)。Excelは引き続き、\rレコードを区切るために復帰文字()を認識します。

長い答え

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

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

より明確な解決策は、最初に実際の改行(\r\n)を一時的な文字の組み合わせで置き換え、改行(\n)を選択した区切り文字(セミコロンファイルのコンマなど)で置き換え、次に一時的な文字を適切な改行で再度置き換えることです。


1
私は反対の状況にありました:\n行と\r\n内部の値の間。Notepad ++で後者を削除しただけです。
Rarst

5

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

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

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

たとえば、 「Test」、「Multiline item \ n multiline item」\ r \ n「Test2」、「Multiline item \ n multiline item」\ r \ n

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


私のロケールに従ってフィールド区切り文字を設定したら、改行文字だけを複数行アイテムと行区切り文字の両方として使用できました
robotik

4

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

破損:
名前、タイトル、説明
"John"、 "Mr。"、 "私の詳細な説明"

作業中:
名前、タイトル、説明
"John"、 "Mr。"、 "私の詳細な説明"


2
ただし、出力に先行スペースがないことに同意します。何か案は?
jeremyalan

改行が必要です:(
Luke

4

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

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


1
良いヒントです!これは、CSVをサードパーティのサービス(機密データ以外)にアップロードすることに問題がなければ、最も便利な変換方法です。インポート時に区切り文字を手動で設定する必要がある場合があることに注意してください。また、結果のExcelファイルを正しく表示するには、セルサイズを調整する必要がある場合があります。
m000

ブラウザーでOffice 365のExcelとも連携します。デスクトップのExcelアプリケーション(このページからのほとんどの提案を試行)ではセル内に改行のあるCSVを適切に開くことができませんでしたが、office.comのExcelは適切にそれを開くことができました。
georg w。

3

誰かがこのスレッドを偶然見つけて、ここで決定的な答えを探している場合(LibreOfficeについて言及している人への信用:

1)LibreOfficeをインストールします2)Calcを開いてファイルをインポートします3)私のtxtファイルにはで区切られたフィールドがあり、「4」で囲まれた文字フィールドがODSファイルとして保存されます5)ODSファイルをExcelで開きます6).xls(x)として保存します7)完了8)これは完璧に機能し、大幅な時間の節約になりました!


3
ODSとして保存する必要はありません
。LibreOfficeは

2

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


2

同様の問題がありました。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 ...チェックボックス[ダイアログボックスの左下を見てください)。


2

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

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

1

CSVを処理するときにExcelが信じられないほど壊れています。LibreOfficeの方がはるかに優れています。だから、私はそれを見つけました:

  • ファイルはBOM付きのUTF-8でエンコードする必要があるため、以下のすべての点でこれを考慮してください。
  • 最善の結果は、はるかに、ファイルエクスプローラーから開くことによって達成されます
  • Excel内から開くと、2つの結果が考えられます。
    • ASCII文字のみの場合、おそらく機能します
    • ASCII以外の文字が含まれている場合、改行が混乱します。
  • OSの地域設定で構成されている小数点に大きく依存しているようですので、正しいものを選択する必要があります
  • OSやOfficeのバージョンによっても動作が異なる場合があると思います

LibreOfficeはExcel よりも推測しやすいと主張していますよね?Excelは、ユーザーが推測しない限り、テキストファイルをインポートするときに正しい質問をすべて行います。
トムブロジェット

1
ありがとうございました!Notepad ++を使用して、CSVを「BOMなしのUTF-8」から「BOM付きのUTF-8」(メニューでは単純な「UTF-8」)に変換するのに役立ちます。次に、エクスプローラーから開いたところ、Excelは正しい記号とセル内の正しい改行を使って適切な方法で表示しました。エクスプローラーからデフォルトの「UTF-8なしBOM」エンコーディングで開いた場合、Excelのインポートされた改行は正しく表示されますが、非ラテンシンボルが誤って表示されます。Excelから開いた場合、エンコードは正しく表示されていましたが、改行には対応していませんでした。
Sergey Beloglazov

1

概観

元の投稿からほぼ10年後、ExcelはCSVファイルのインポートに関して改善されていません。ただし、HTMLテーブルをインポートする方がはるかに優れていることがわかりました。したがって、Pythonを使用してCSVをHTMLに変換し、結果のHTMLをExcelにインポートできます。

このアプローチの利点は、(a)確実に機能する、(b)データをサードパーティのサービス(Googleシートなど)に送信する必要がない、(c)追加の「ファット」インストールが不要(LibreOffice、数字など)ほとんどのユーザーにとって、(d)CR / LF文字とBOMマーカーでの干渉よりも高いレベル、(e)ロケール設定をいじる必要はありません。

手順

次の手順は、Python 3がインストールされている限り、bashのようなシェルで実行できます。Pythonを使用してCSVを直接読み取ることができますが、csvkitはJSONへの中間変換を行うために使用されます。これにより、Pythonコードで複雑なCSVを処理する必要がなくなります。

まず、次のスクリプトをとして保存しますjson2html.py。スクリプトはstdinからJSONファイルを読み取り、HTMLテーブルとしてダンプします。

#!/usr/bin/env python3
import sys, json, html

if __name__ == '__main__':
    header_emitted = False
    make_th = lambda s: "<th>%s</th>" % (html.escape(s if s else ""))
    make_td = lambda s: "<td>%s</td>" % (html.escape(s if s else ""))
    make_tr = lambda l, make_cell: "<tr>%s</tr>" % ( "".join([make_cell(v) for v in l]) )
    print("<html><body>\n<table>")
    for line in json.load(sys.stdin):
        lk, lv = zip(*line.items())
        if not header_emitted:
            print(make_tr(lk, make_th))
            header_emitted = True
        print(make_tr(lv, make_td))
    print("</table\n</body></html>")

次に、csvkitを仮想環境にインストールし、それを使用csvjsonして入力ファイルをスクリプトにフィードします。-I引数で推測するセルタイプを無効にすることをお勧めします。

$ virtualenv -p python3 pyenv
$ . ./pyenv/bin/activate
$ pip install csvkit
$ csvjson -I input.csv | python3 json2html.py > output.html

今すぐoutput.htmlExcelでインポートすることができます。セルの改行は保持されます。

必要に応じて、Python仮想環境をクリーンアップできます。

$ deactivate
$ rm -rf pyenv

1

これはExcel 2016の場合です。

Excelウィザードでcsvファイル内の改行で同じ問題が発生しました。

その後、「新しいクエリ」機能を使用して試しました。データ->新しいクエリ->ファイルから-> CSVから->ファイルを選択->インポート->ロード

それは完全に機能し、同じ問題を抱えているすべての人にとって非常に迅速な回避策でした。


0

Excelに直接インポートすると、csv形式ではなくテキスト形式としてインポートが行われる場合、私にとってはうまくいきました。M /


0

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


0

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


0

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

Pythonを使用してcsvファイルを記述します。

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

file.write(data)


0

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

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


0

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


0

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


大きなファイルでこれを試してください:)
chukko

-1

二重引用符内の改行は、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の両方で上記を使用して修正することができました。


私はこれがうまくいくとは思いません。Excel自体のセルに改行を含むCSVをエクスポートしました。ロケールは変更されなかったので、Excelはそれを正しくロードできたはずです。しかし、それはできません。セルの改行はまだ混乱しています。
m000
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.