回答:
ソースデータを制御できるユーザーの場合、CSV列が次の形式でない限り、ExcelはCSVフィールドの形式を自動検出します。
"=""Data Here"""
例えば...
20, 5.5%, "0404 123 351", "3-6", "=""123"""
[number] [percent] [number] [date] [string] <-- how Excel interprets
Googleスプレッドシートでも機能しますが、他のスプレッドシートアプリがこの表記をサポートしているかどうかはわかりません。
データに引用符自体が含まれていると思われる場合は、次のように二重エスケープする必要があります...
"=""She said """"Hello"""" to him"""
(編集:DMA57361に感謝します!)
"=""123"""
以外の場合、最後の列は不適切な形式である必要があります。を含むフィールドは"
区切る必要があり"
、フィールド内のsは他"
のsでエスケープされます。
="123"
は、フィールドまたはフィールド"
を正しく区切らずにフィールド区切り文字が含まれているため、有効なCSVフィールドではありません。Excelがたまたま数式を数式として読み取るのは、Excelだけであり、CSVファイルとは関係ありません。
多くの人がそうであるように、私はMicrosoftが下したさまざまな解決策を試し、同じ決定に苦労してきました。
Excel 2007の場合は次のとおりです。
しかしながら:
二重引用符を囲む前にすべての値の前にタブを置くと、日付への変換が防止され、先頭または末尾のゼロのトリミングが防止され、シートは各セルの左上隅に厄介な警告マーカーさえ表示しません。
例えば:
"<tab character><some value>","<tab character><some other value>"
タブ文字は二重引用符で囲む必要があることに注意してください。編集:二重引用符は不要です。
csvファイルをダブルクリックすると、Excelでスプレッドシートとしてファイルを開くことができ、テキストデータのように、上記のように扱われるすべての値が表示されます。「。」を使用するようにExcelを設定してください。csvファイルの「、」またはすべての行ではなく小数点として、各行の最初のセルに1つのテキストとして表示されます。どうやらMicrosoftは、CSVが「小数点ではなく」区切り値を意味すると考えているようです。
Excelのインポート機能を使用すると、各列を解釈する形式(自動、テキスト、または日付)を指定でき、データファイルを変更する必要はありません。
あなたはとしてそれを見つけることができますData
→ Get External Data
→ From Text
エクセル2007/2010インチ
またはData
→ Import External Data
→ Import Data
エクセル2003インチ
以下は、与えられたデータ例で動作しているExcel 2003テキストインポートウィザードの画像です。後者の2つの列をテキストとしてインポートしています。
サイモンの例は私には役に立たなかったし、言語の違いだと思う。C#では、私の作業フォーマット文字列は次のようになります。
var linebreak = (i++ == list.Count) ? "" : "\r\n";
csv += String.Format("=\"{0}\",{1},{2},{3},=\"{4}\"{5}",
item.Value, item.Status, item.NewStatus, item.Carrier, c.Status, linebreak);
これが出力ファイルの外観です:
="abababababab",INVALID,INVALID,USPS,="",
="9500100030492359000149",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9500100030492359000149",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9500100030492359000149",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9500100030492359000149",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9400110200793482982812",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9400110200793482982812",UNKNOWNSTATUS,DELIVERED,USPS,="3"
="9400110200793000216184",UNKNOWNSTATUS,INVALID,USPS,=""
ご覧のように、出力ファイルの形式は、Visual Basicの規則では="VALUE",
ない"=""VALUE""",
可能性があります。
Excel 2010を使用しています。ちなみに、Googleスプレッドシートはこの方法でフォーマットされたファイルを開いたり変換したりしません。このように等号を削除すると機能し"VALUE",
ます。Excelはファイルを開きますが、列を文字列にしたいという事実を無視します。
Excelに日付をテキストとして解釈させる簡単な方法は、次のように完全引用符を使用する代わりに、日付の前に単一引用符を付けることです。
'10 / 11/2002
CSVを開くのではなくインポートできる場合は、各列の形式をExcelに指示できます。私が尋ねたこの質問を見てください。