ユーザーがExcelを使用してそれを開くためのCSVファイルを生成したい。
値のコンマをエスケープしたい場合は、 "640,480"と記述できます。
先頭のゼロを保持したい場合は、「001234」を使用できます。
しかし、値にコンマと先行ゼロの両方を保持したい場合、= "001,002"と書くと2つの列に分割されます。正しいデータを表現するソリューションはないようです。
ExcelのCSVで1、002を表現する方法はありますか?
ケントフレドリックの回答には解決策が含まれています。
"=" "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"という解決策を見つけました。それは私のマシンで動作しているようです!
かなり古いスレッドですが、値の後に空白を追加しないでください。その後、文字列として扱われ、先行ゼロは削除されません。
"001,002"。 ""
誰もすでにそれについて言及していないので、この古い投稿で言及する価値があると考えました。
数字の前に水平タブ文字\t
を追加すると、MS Excelでも先行ゼロが表示されます。また、タブ文字はExcelシートに表示されません。二重引用符で囲まれていても。 (例:\"\t001,002\"
)
また、そのような数値の前に\0
別名NULLを置くのと比較して、Notepad ++では見栄えがよくなります。
現在のすべてのExcelバージョンまたはOS XのNumbersアプリでは、提案されたすべての回答が現在のところ機能しないようです( "=" "blahblah" ""など)。
私がいじくり回して動作していることがわかった唯一の解決策は、文字列の先頭にエスケープされたnull文字を追加することです(これは、PHPまたはCベースの言語では\ 0です)。計算シートを開いたときに、ソフトウェアで計算または処理されずにそのままです。
echo "\0" . $data;
Excelは、内容に応じてCSV列のデフォルトのフォーマットを使用します。したがって、csvに001がある場合、Excelはそれを自動的に1に変更します。
Excelで先行ゼロをcsvファイルから保持する唯一の方法は、csvファイルの拡張子を.txtに変更してから、Excelを開き、[開く]をクリックして、txtファイルを選択するだけです。テキストインポートウィザードが表示されます。 。 CSV形式(カンマ区切り)を選択し、形式として[テキスト]を選択していることを確認します。
これで完了です。これで、先行ゼロを維持しながら、以前のcsvデータを他のcsvデータにエクスポートできます。
Excelスプレッドシートをさらに見ると、CSVを使用して実行できないことを望んでいます。
このサイト http://office.Microsoft.com/en-us/Excel/HP052002731033.aspx は、「セルに数式の値ではなく数式が表示される場合、数式はテキストとして変換されます。すべてのフォーマット、グラフィック、オブジェクト、およびその他のワークシートの内容は失われます。ユーロ記号は疑問符に変換されます。」
ただし、ロード方法を変更して、必要な結果を得ることができます。次のWebページを参照してください: Microsoft import a text file 。
重要なことは、外部データのインポート-データ-テキストファイルのインポートを選択し、[次へ]、[次へ]の順に移動して、列のデータ形式の下にある[テキスト]にチェックマークを付けることです。これにより、数値として解釈され、フォーマットが失われなくなります。
私はCSV to Excelをいじくり回していました(PHPを使用してCSVを作成しますが、この解決策はどの言語でも機能すると思います。先頭の文字(+、-、または0が消えています。chr(13)
を接頭辞として使用してCSVを作成してください。これは印刷できない文字で、Excel Office 2010バージョンでは問題なく機能します。他の印刷できない文字を試しましたが、うまくいきませんでした。
だから私はChirpインターネットソリューションを使用しますが、私のプレフィックスで微調整しました:
if (preg_match("/^0/", $str) || preg_match("/^\+?\d{8,}$/", $str) || preg_match("/^\d{4}.\d{1,2}.\d{1,2}/", $str)) {
$str = chr(13)."$str";
}
「Content-Disposition」を使用し、HTMLタグを使用してASPからExcelにエクスポートする場合は、そのタグに「style = 'mso-number-format:\ @;'」を追加して、テキスト値のみを受け入れるようにする必要があります。 、それによって先行ゼロの省略が回避されます。フォワードスラッシュ「\」が受け入れられる場合は、ダブルフォワードスラッシュ「\」を使用します