検索結果を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」のコンマが適切に処理されていることに注意してください。問題を引き起こしているのは改行だけです。
私はついに問題を発見しました!
ASCIIやUTF-8ではなく、Unicodeエンコードを使用してファイルを作成していたことがわかりました。 FileStreamのエンコーディングを変更すると、問題が解決するようです。
すべてのご提案ありがとうございます!
Excel(少なくともXP上のOffice 2007では)は、CSVファイルをインポートするには、[ファイル]-> [開く]メニューから開くか、エクスプローラーでファイルをダブルクリックするかによって動作が異なります。
UTF-8エンコードのCSVファイルがあり、いくつかのセルに改行が含まれています。このファイルをExcelの[ファイル]-> [開く]メニューから開くと、「CSVのインポート」ウィザードがポップアップし、ファイルを正しくインポートできません。引用符で囲まれていても、改行は新しい行を開始します。エクスプローラーウィンドウでこのファイルをダブルクリックしてこのファイルを開くと、ウィザードの介入なしで正しく開きます。
提案された解決策はどれも私にとってはうまくいきませんでした。
実際に動作するもの(エンコードを使用):
Csvファイル(エディターで開く)からデータをコピーして貼り付け、「列内のテキスト」を実行します->動作しません、大丈夫です。
次のタブに移動して、もう一度コピー/貼り付けします(クリップボードに既にあるものと同じもの)->自動で機能します。
これを手動で行う場合は、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を使用している可能性がある場合、両方のバージョンを公開し、どのファイルが正しい行数を提供するかを確認することを提案する必要があると思います。
したがって、これを機能させるために収集できたすべての詳細は次のとおりです。
これが誰かを助けることを願っています。
改行/改行文字を削除します(\n
with Notepad ++)。 Excelは、キャリッジリターン文字(\r
)を認識して、レコードを分離します。
前述のように、CSVフィールド内では改行文字がサポートされていますが、Excelはそれらを常に適切に処理するとは限りません。サードパーティのCSVでも同様の問題に直面しました。エンコードの問題はあるかもしれませんが、エンコードの変更では改善されませんでした。
私のために働いたのは、すべての改行文字(\n
)を削除することでした。これは、レコードがキャリッジリターンと改行(CR/LF)の組み合わせで区切られていると仮定して、フィールドを1つのレコードに折りたたむという効果があります。その後、Excelはファイルを適切にインポートし、改行で新しいレコードを認識します。
明らかな解決策は、最初に実際の改行(\r\n
)を一時的な文字の組み合わせに置き換え、改行(\n
)を選択する分離文字(セミコロンファイルのコンマなど)に置き換えてから、一時的な文字を適切な改行に再度置き換えます。
フィールドの先頭にスペースが含まれている場合、Excelは二重引用符をテキスト修飾子として無視します。解決策は、コンマ(フィールド区切り記号)と二重引用符の間の先行スペースを削除することです。例えば:
壊れた:
名前、タイトル、説明
「ジョン」、「ミスター」、「私の詳細な説明」
ワーキング:
名前、タイトル、説明
「ジョン」、「ミスター」、「私の詳細な説明」
J Ashleyのコメントに対する+1。私もこの問題に遭遇しました。 Excelには以下が必要であることがわかります。
引用符で囲まれた文字列内の改行文字(「\ n」)
各行間のキャリッジリターンと改行。
例「テスト」、「複数行アイテム\ n複数行アイテム」\ r\n「Test2」、「複数行アイテム\ n複数行アイテム」\ r\n
メモ帳++を使用して、各行を適切に区切り、文字列で改行のみを使用しました。空のExcelドキュメントに複数行のエントリを作成し、メモ帳++でcsvを開くことでこれを発見しました。
誰かがこのスレッドを偶然見つけて、ここで決定的な答えを探しているなら(LibreOfficeに言及した人の功績:
1)LibreOfficeをインストールする2)Calcを開いてファイルをインポートする3)txtファイルのフィールドがで区切られ、「4)ODSファイルとして保存する5)ExcelでODSファイルを開く6).xls(x)として保存する7)完了8)これは私にとって完璧に機能し、BIGTIMEを救ってくれました!
Notepad ++に貼り付け、ANSIで[エンコード]> [エンコード]を選択し、もう一度すべてコピーしてExcelに貼り付けます:)
フランスの地域設定を使用したWinXPでのExcel 2010の経験
同様の問題がありました。 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 ...チェックボックス[ダイアログボックスの左下を見る)
Googleスプレッドシートを使用して、CSVファイルをインポートします。
次に、それをエクスポートしてExcelで使用できます
改行を含むセルを含む新しいシートを作成し、csvに保存してから、行末文字を表示できるエディター(notepad ++など)で開きます。そうすることで、セルの改行がLFでコード化されているのに気づくでしょう。一方、「実際の」行末はCR LFでコード化されています。これで、Excel用の「正しい」csvファイルを生成する方法がわかりました。
ちょうど私のために働いたのは、インポートがcsv形式ではなくテキスト形式として行われるという条件で、Excelに直接インポートすることです。 M /
これは、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)
二重引用符内の改行は、CSV標準に従って完全に問題ありません。 Excelでの改行の解析は、リスト区切り文字のOS設定に依存します。
Windows:リストの区切り文字をコンマに設定する必要があります(地域と言語"形式"詳細)ソース: https://superuser.com/questions/238944/how-to-force-Excel-to-open- csv-files-with-data-arranged-in-columns#answer-633302
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の両方で上記を使用してそれを修正することができました。
区切り記号をコンマ(、)ではなくTAB(\ t)に置き換えます。次に、エディター(メモ帳など)でファイルを開き、そこからコンテンツをコピーして、Excelファイルに貼り付けます。
CSVを扱う場合、Excelは非常に壊れています。 LibreOfficeの方がはるかに優れています。だから、私はそれを見つけました:
また、この問題がありました。つまり、引用文字列にLFが含まれるcsvファイル(コンマ区切り、二重引用符区切りの文字列)です。これらはダウンロードされたSquareファイルです。データをインポートしましたが、テキストファイルとしてインポートする代わりに、「HTMLから」インポートしました。今回は、引用符付き文字列のLFを無視しました。
私の場合、CSVをnotepad ++で開き、最初の行としてSEP=","
を追加すると、問題なくExcelで改行とutf-8でCSVを開くことができます
Mac OSにアクセスできる場合、AppleスプレッドシートNumbersが適切に機能することがわかりました。 Excelで処理できなかった複雑な複数行のCSVファイルを選択解除すること。 .csv
をNumbersで開き、Excelにエクスポートするだけです。