CSVファイルのすべての列をExcelに強制的に引用するにはどうすればよいですか?


回答:


44

LibreOfficeまたはOpenOfficeでXLSファイルを開き、[名前を付けて保存...]を選択し、[テキストCSV]を選択すると、区切り文字として引用符も含むCSVファイルが生成されます。例:「Smith」、「Pete」、「Canada」、「Jones」、「Mary」、「England」

[すべてのテキストセルを引用]ボックスをオンにします。 LibreOfficeでCSVにエクスポート

数値フィールドも引用するには、保存する前にセル範囲を強調表示し、セルの書式を「テキスト」に変更します。


7
特定の質問に対する答えではありませんが、クライアントにマクロを使用させるよりも簡単な回避策です!
ダンカンムー

私は私がここにいる理由です、毎日この方法を使用しての疲れ
vladkras

OpenOfficeはポータブルソフトウェアなので、これが最も簡単で便利なソリューションだと思います。何もインストールしたり、コードを書いたりする必要はありません。
スコットチュー

最高の答え!!
ラジャバルダン

20
全く答えではありません。質問は明示的にMS Excel
vladkras

43

このページには、馬の口から直接来る解決策もあります。

http://support.microsoft.com/kb/291296/en-us

リンクが低下した場合、検索するトピックは次のとおりです。

「Excelでコンマと引用符の両方の区切り文字を使用してテキストファイルをエクスポートする手順」または「Q291296」

tl; dr:マクロを使用


10
注目に値するものは、マクロが行と列の値に整数を使用していることです。32768を超える行をエクスポートしようとすると、エラーが発生します。たとえば、データ型をLongに変更すると、その問題は解決します。
ダン

良いスポット(+1)。最大32768行のExcelのバージョン用に最初に記述されたため、彼らはコードを更新していないようです。
sahmeepee

9
私はこのマクロで要旨を作成するために自由を取り、いくつかの修正を行いました:gist.github.com/fabriceleal/7803969
fableal

@fablealすばらしいスニペット!それは答えに値する。
xiankai

@sahmeepeeが述べたように、Office 2010は、選択された多数の行で依然としてオーバーフローしています。
access_granted

18

私はこの簡単な解決策を見つけました:

  1. 引用符を追加するセルを強調表示します。
  2. 右クリックして、「セルの書式設定」→「タブ」:「番号」→「カテゴリ:カスタム」に移動
  3. [ タイプ]フィールドに次を貼り付けます"''"@"''"(以下の詳細を参照)。
  4. 「OK」をクリックします

貼り付ける文字列"''"@"''"は、二重引用符、単一引用符、単一引用符、二重引用符、@記号、二重引用符、単一引用符、単一引用符、二重引用符です。

ここにある情報からExcel 2010用に編集されています。


うーん...私に「」ITEM「」(2つの単一引用符)ではなく、「(1ダブルクォート)を得た私は、検索を行なったし、それを修正するために交換してください。。
クレイ・ニコルズ

6
形式は\ "@ \"である必要がありました
マナト

LibreOfficeを使用している場合、この回答は実際に完璧な回答でした。オプションがあると主張しているドキュメントにもかかわらず、Format> Number Formatメニューに「テキスト」オプションがまったくありません。LibreOfficeで[セルの書式設定]を右クリックすると、ドロップダウンに表示されるやや役に立たない6つのオプションではなく、セル解釈オプションの完全なリストが表示されます。
1owk3y

@manatの回答、ただし中括弧なし:\"@\"
MSC

12

Powershellは正しくダンプするようです。のようなもの

powershellを知らない場合は、Windowsマシンでpowershell.exeを検索してください。

import-csv C:\Temp\Myfile.csv | export-csv C:\Temp\Myfile_New.csv -NoTypeInformation -Encoding UTF8

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


便宜上、CSVが保存されているフォルダーでShiftキーを押しながら右クリックし、ここPowerShellウィンドウ開くを選択しますimport-csv Myfile.csv | export-csv Myfile_quoted.csv -NoTypeInformation -Encoding UTF8。これにより、コマンドが簡単になります。スペースまたはその他の特殊文字を含むファイル名を単一引用符で囲むことを忘れないでください。
ウォルフ

4

これが私にとって最も簡単でした。スプレッドシートをAccess 2010にインポートし、そこから区切りテキストファイルとしてエクスポートしました。フィールドの周りに引用符を付けてください。私はステップダウンしているので、42k行で1分もかかりません。


唯一の欠点は、フィールド自体に二重引用符が含まれている場合です。
access_granted

3

VBAマクロを使用しないが、Notepad ++または同様のマクロベースのテキストエディターを必要とする別の作業を見つけました。

ファイルをタブ区切りテキストとしてエクスポートし、エクスポートしたファイルをNotepad ++で開きます。'tab'文字のすべてのインスタンスをテキスト "、"(つまり、二重引用符、コンマ、二重引用符)に置き換えてから、別のマクロを使用して、テキストの各行に二重引用符を付加します。

少しハックしますが、VBAマクロを機能させるよりも早く見つけました。


1
メモ帳++で、あなたは最高の正規表現検索を使用しているだろうとやると置き換えると、あなたはすべての3一つの場所に(行、タブと行の最後の開始)の操作を置き換える行うことができますしたい場合
sahmeepee

3

引用符を追加するセルを強調表示します。[フォーマット]-> [セル]-> [カスタムコピー/貼り付け]に移動し、[タイプ]フィールドに以下を入力します。\ "@ \" [OK]をクリックします。

From:http : //www.lenashore.com/2012/04/how-to-add-quotes-to-your-cells-in-excel-automatically/


1
これはアルファに対してうまく機能します-数値の列には\ "#\"が必要です。
DropHit

\ "@ \"と\ "#\"の間で機能します。ただし、数値列のNotepad ++でヘッダーを編集し、すべての「」を「」に置き換える必要があります。なんて痛い。
ゲイリー

試したことはありません。しかし、csvを作成する場合、列をテキストに変更して\ "@ \"を使用することはできません
Steve Coleman

2
  1. 引用符を追加するセルを強調表示します。
  2. 右クリックして、「セルの書式設定」→「タブ」:「番号」→「カテゴリ:カスタム」に移動
  3. [タイプ]フィールドに次を貼り付けます"''"@"''"(以下の詳細を参照)。
  4. 「OK」をクリックします
  5. メモ帳(または同等のもの)で.csvファイルを開きます。
  6. すべて' '(単一引用符を繰り返し)を"(二重引用符)に置き換えます
  7. すべて置き換える ;
  8. 修正された.csvファイルを保存する

1

Notepad ++を使用して各行の先頭に引用符を追加する場合は、エクスポートされたcsvファイルを開き、1行目、1列目にカーソルを置いてから、「挿入するテキスト」フィールドのメニュー編集/列エディター...をクリックします。"を入力する、各行の先頭に引用符が付きます。その後、正規表現を使用してすべてのタブを検索/置換できます。


0

Windowsユーザーの場合

  1. 「名前を付けて保存」ExcelファイルをCSVとして
  2. 保存したファイルをMircrosoft Works Spreadsheetで開く
  3. スプレッドシートをCSVとして「名前を付けて保存」
  4. すべての非数値フィールドに「」が含まれるようになりました

これは、前方および後方の多様性を持つ同じキーボード引用ではないことに注意してください。
CSVを使用してMysqlテーブルにロードする場合は、ENCLOSEDパラメーターにカットアンドペーストすると、メッセージが表示される理由がわかります#1083 - Field separator argument is not what is expected


3
Mircrosoft Works <-?確かですか?
nixda

0

以下のアプローチを使用して、Excelで3つの列を取得し、4番目の列に文字列を作成しました。

=CHAR(34)&A2&CHAR(34)&","&CHAR(34)&B2&CHAR(34)&","&CHAR(34)&C2&CHAR(34)&""

"''"@"''"アプローチに関する私の問題は、データの2番目の列が数値であり、この"''"@"''"アプローチでは数値を何も使用しなかったことです。2番目の列が空白の場合もありますが、最終的なテキストファイルに表示されるようにする必要がありました。


0

別の方法として、MSアクセスがある場合(ver 2007を使用)、ファイルをインポートしてからテキストファイルとしてエクスポートします。次に、.txtを.csvに変更します。すべての数値フィールドには二重引用符が付いていないことに注意してください。したがって、数値の周囲に二重引用符が必要な場合は、Accessでフィールドを数値フィールドからテキストフィールドに変更します。


0

データのコピー、数式、エクスポート、ファイルプロパティの変更、メモ帳での置換、エクスポートされたファイルの保存とクリーンアップを使用して、Excel 2016とメモ帳のみでコンマ区切りおよび引用符付き文字列をエクスポートできます。それぞれは簡単なステップです。詳細に:

  1. エクスポートする列を新しい中間シートにコピーして、元のバックアップを保持し、新しいシートを後で削除してスプレッドシートをそのままにします。

  2. それ以外の場合は発生しない文字、たとえば「#」または「;-)」を列内の文字列の両端に配置し、式=concat("#",trim(A1),"#")でAと言い、別の列のすべての行に式を配置します。

    • 隣接する列は同時に実行できますが、文字列として読み込まれないように数字を引用符で囲まないでください。
    • トリムは、不慣れなエクスポート動作を引き起こす可能性のある後続スペースを回避します。
    • 文字列には、インポートを混乱させる可能性のある「」を含めないでください。
  3. 「123」メソッドを使用して、新しい列をA ...にコピーして戻し、式を保持しないようにします。

  4. シートをCSVファイルとしてエクスポートし、数字を含むフィールド間にカンマを挿入します。

  5. file.csvプロパティを変更して、メモ帳で開くことができるようにします。

  6. メモ帳を使用して、任意の文字を「」に置き換えます。

  7. 任意の文字として「」を使用するのが賢明なように思えますが、「$ A $ 50」などの別のセルに配置する必要があり、エクスポートに表示されるのは明らかに別の不便なトリガーです。

  8. メモ帳でファイルを保存し、インポートする* .txtファイルにして、中間の* .csvを削除する必要があります。

  9. 余分なスプレッドシートシートのクリーンアップが完了しました。

おそらく、Accessエクスポートツールは、いつかExcelに埋め込むことができます。カットアンドペーストを使用するこれらのプログラムのより一般的なアプローチは、出力構造を解釈して区切り文字を提供する方法の選択をペーストオプションに含めることです。


0

2014年8月21日のマイケルの答えは、本当に役に立ちます。ただし、追加の手順を1つまたは2つ実行する必要がありました。

  1. メモ帳(または同等のもの)で.csvファイルを開きます。
  2. すべての ''(単一引用符を繰り返します)を "(二重引用符)に置き換えます
  3. すべてを置き換えます。(Excelのドイツ語版で区切り文字として使用)、
  4. 修正された.csvファイルを保存する

downbvoteの説明はありませんか?コースのパーですが、他の人はどのように学ぶことが期待されていますか?YOUは氏Downvoter、何が間違っていることは明らかだと思うかもしれないが、それは誰にでも明らかではないかもしれません。ここでコミュニティを構築しようとしていますが、あなたは助けていません。
Mawg

-1

これが私のレシピです。私はこれをしなければならないことを嫌いますが、私はより良い方法がありませんでした。私の場合、どのフィールドにも引用符が付いていません。また、UTF-8エンコードを使用する必要がありました。タブの代わりに、これが私がやったことです。

注:単一引用符などで囲まれた二重引用符を配置することは不可能であるため、意図的に「キーボードフォーマット」を使用して、キーストロークとリテラル文字および文字列の両方を示しました。

  1. Excelスプレッドシートで新しい列を他の列の前に挿入します(最初の列のタイトルをクリックして列全体を選択し、右クリックして「挿入」を選択します)。
  2. 新しい列から空のセルの範囲全体を選択します(デフォルトで選択されています)。数式フィールドに、必要なものを挿入します(例:)xxxCTRL+ enterを押して、列全体に同じ値を入力します。
  3. ファイルをUnicodeテキスト(* .txt)として保存します。
  4. Notepad ++でファイルを開きます。
  5. CTRL+ fを押して、検索/置換を開きます。
  6. [置換]タブに移動します。
  7. 「検索モード」で「拡張(\ n、\ r、\ t、\ 0、\ x ...)」を選択します。
  8. [検索]フィールドにxxxtabキーストロークを入力します。
  9. [置換]フィールドに、"(二重引用符)を入力します。
  10. すべて置換を押します。
  11. [検索]フィールドにtabキーストロークを入力します。
  12. [置換]に、";"(二重引用符、セミコロン、二重引用符)を入力します。
  13. すべて置換を押します。
  14. これでほぼ完了です。最後の二重引用符については\r、「検索」フィールドに入力"\r"し、「置換」フィールドに(二重引用符、バックスラッシュ、二重引用符)を入力します。すべて置換を押します。
  15. 漢字などを使用していない限り、エンコーディングをUTF-8に変更して、ファイルを安全に保存できます。

-1

私はこの問題に何度も遭遇しました。ここに私が思いついた最も簡単な解決策があります。

  1. ファイルをExcelとして保存する
  2. ExcelをAccessテーブルにインポートする
  3. Accessからテキストファイルにテーブルをエクスポートします。

Accessでは、エクスポートの区切り文字をカンマとして指定し、テキストフィールドを引用符で修飾することを指定できます。エクスポートウィザードでは、必要な文字列を囲む区切り文字または文字を指定できます。

フィールドを特定の順序に並べ替えたり、Accessによって追加された自動IDフィールドを非表示にするために、Accessクエリを作成する必要がある場合があります。

また... CSVにエクスポートしたら、Excelで再度開かないでください。結果を確認する場合は、メモ帳で開きます。Excelにはcsvのデータが乱れる傾向があります。...正しく記憶している場合、先行ゼロが埋め込まれたフィールドだったと思います。


これは、user326114の回答の情報と重複しているようです。
fixer1234

-1

OpenOfficeアプリを使用してExcelスプレッドシートを取得し、すべてのテキストフィールドを引用符で囲んだテキスト(csv)ファイルを作成する方法を次に示します。

OpenOfficeでExcelファイルを開き、次の手順に従います。

ファイル>名前を付けて保存

作成しようとしているファイルに新しい名前を付けます

[ファイルの種類]で、[CSV(.csv)をテスト]を選択します

「フィルター設定の編集」チェックボックスをオンにします

「保存」をクリックします

「現在の形式を維持する」を選択します

フィールド区切り文字はカンマにする必要があります:、

テキスト区切り文字には引用符が必要です: "

[すべてのテキストセルを引用]ボックスをオンにします

「OK」をクリックします

これは私のために働いた!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.