ユーザーが Excel を使用して開くための CSV ファイルを生成したいと考えています。
値のカンマをエスケープしたい場合は、「640,480」と記述できます。
先頭のゼロを保持したい場合は、="001234" を使用できます。
しかし、値にカンマと先行ゼロの両方を保持したい場合、="001,002" と書くと 2 つの列に分割されます。正しいデータを表現することは解決策ではないようです。
001,002をCSV for Excelで表現する方法はありますか?
Kent Fredric の回答には解決策が含まれています。
"=""001,002"""
(これが有効なExcelソリューションであることがケントの回答から明らかではないため、これを別の回答として投稿するのは面倒です。)
データにプレフィックス String を付けます。
"N001,002","N002,003"
(そのプレフィックスが E でない限り)
上記の表記 (少なくとも OpenOffice では) は、N001,002 バイトが正しく格納された合計 2 つの列として解析されます。
CSV 仕様では、引用符文字列内で , を使用できると規定されています。
また、経験からの警告: 電話番号でもこれを行うようにしてください。それ以外の場合、Excel は電話番号を浮動小数点数として解釈し、科学表記法 :/ で保存します。1.800E10 は実際には適切な電話番号ではありません。
OpenOffice では、この RawCSV チャンクも期待どおりにデコードされます。
"=""001,002""","=""002,004"""
すなわち:
$rawdata = '001,002';
$equation = "=\"$rawdata\"";
$escaped = str_replace('"','""',$equation);
$csv_chunk = "\"$escaped\"" ;
行う
"""001,002"""
これは、「001,002」と入力して、Excel で CSV として保存することでわかりました。これがまさにあなたが望むものではない場合 (引用符が必要ない場合)、これはあなたが望むものを見つけるための良い方法かもしれません.
これがオプションである場合、別のオプションはタブ区切りテキストを使用することです。
私のブログの読者が ="001" & CHAR(44) & "002" という解決策を見つけました。私のマシンで実行できるようです!
Excel スプレッドシートを詳しく見ると、CSV を使用して実行できないことがわかります。
このサイトhttp://office.microsoft.com/en-us/excel/HP052002731033.aspxは次のように述べています。は失われます。ユーロ記号は疑問符に変換されます。」
ただし、ロード方法を変更して、必要な結果を得ることができます。次のWeb ページを参照してください: Microsoft import a text file .
重要なことは、[外部データのインポート] - [データのインポート] - [テキスト ファイル] を選択し、[次へ]、[次へ] に進み、列データ形式の下の [テキスト] にチェックを入れることです。これにより、数値として解釈されてフォーマットが失われるのを防ぐことができます。
「Content-Disposition」を使用し、HTML タグを使用して ASP から Excel にエクスポートする場合は、そのタグに「style='mso-number-format:\@;'」を追加して、テキスト値のみを受け入れるようにする必要があります。 ,これにより、先頭のゼロの省略が回避されます.スラッシュ「\」が受け入れられる場合は、ダブルスラッシュ「\」を使用してください
提案されたすべての回答は、現在のすべての Excel バージョンまたは OS X の Numbers アプリ ("=""blahblah""" など) で機能していないようです。
いじって動作することがわかった唯一の解決策は、エスケープされたヌル文字を文字列の先頭に追加することです (PHP または C ベースの言語では \0 です)。計算シートを開いたときに、ソフトウェアによって計算または処理されることなく、すべてがそのまま処理されてしまいます。
echo "\0" . $data;