web-dev-qa-db-ja.com

先行ゼロとコンマの両方を含むCSV for Excel

ユーザーがExcelを使用してそれを開くためのCSVファイルを生成したい。

値のコンマをエスケープしたい場合は、 "640,480"と記述できます。

先頭のゼロを保持したい場合は、「001234」を使用できます。

しかし、値にコンマと先行ゼロの両方を保持したい場合、= "001,002"と書くと2つの列に分割されます。正しいデータを表現するソリューションはないようです。

ExcelのCSVで1、002を表現する方法はありますか?

27
Darkthread

ケントフレドリックの回答には解決策が含まれています。

  "=" "001,002" ""

(これは、有効なExcelソリューションであるというケントの回答からは明らかではないため、これを個別の回答として投稿するのは面倒です。)

33
John Y

データに接頭辞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\"" ; 
5
Kent Fredric

行う

"""001,002"""

「001,002」と入力し、ExcelでCSV形式で保存することでこれを見つけました。これが正確に必要なものでない場合(引用符は必要ありません)、これは、必要なものを見つけるための良い方法です。

別のオプションとして、これがオプションである場合は、タブ区切りテキストを使用することもできます。

4
Nick Fortescue

私のブログの読者が= "001"&CHAR(44)& "002"という解決策を見つけました。それは私のマシンで動作しているようです!

2
Darkthread

かなり古いスレッドですが、値の後に空白を追加しないでください。その後、文字列として扱われ、先行ゼロは削除されません。

"001,002"。 ""

1
Sparky

誰もすでにそれについて言及していないので、この古い投稿で言及する価値があると考えました。

数字の前に水平タブ文字\tを追加すると、MS Excelでも先行ゼロが表示されます。また、タブ文字はExcelシートに表示されません。二重引用符で囲まれていても。 (例:\"\t001,002\"

また、そのような数値の前に\0別名NULLを置くのと比較して、Notepad ++では見栄えがよくなります。

1
LukStorms

現在のすべてのExcelバージョンまたはOS XのNumbersアプリでは、提案されたすべての回答が現在のところ機能しないようです( "=" "blahblah" ""など)。

私がいじくり回して動作していることがわかった唯一の解決策は、文字列の先頭にエスケープされたnull文字を追加することです(これは、PHPまたはCベースの言語では\ 0です)。計算シートを開いたときに、ソフトウェアで計算または処理されずにそのままです。

echo "\0" . $data;
0
David Lapointe

Excelは、内容に応じてCSV列のデフォルトのフォーマットを使用します。したがって、csvに001がある場合、Excelはそれを自動的に1に変更します。

Excelで先行ゼロをcsvファイルから保持する唯一の方法は、csvファイルの拡張子を.txtに変更してから、Excelを開き、[開く]をクリックして、txtファイルを選択するだけです。テキストインポートウィザードが表示されます。 。 CSV形式(カンマ区切り)を選択し、形式として[テキスト]を選択していることを確認します。

これで完了です。これで、先行ゼロを維持しながら、以前のcsvデータを他のcsvデータにエクスポートできます。

0
Bayi

Excelスプレッドシートをさらに見ると、CSVを使用して実行できないことを望んでいます。

このサイト http://office.Microsoft.com/en-us/Excel/HP052002731033.aspx は、「セルに数式の値ではなく数式が表示される場合、数式はテキストとして変換されます。すべてのフォーマット、グラフィック、オブジェクト、およびその他のワークシートの内容は失われます。ユーロ記号は疑問符に変換されます。」

ただし、ロード方法を変更して、必要な結果を得ることができます。次のWebページを参照してください: Microsoft import a text file

重要なことは、外部データのインポート-データ-テキストファイルのインポートを選択し、[次へ]、[次へ]の順に移動して、列のデータ形式の下にある[テキスト]にチェックマークを付けることです。これにより、数値として解釈され、フォーマットが失われなくなります。

0
Nick Fortescue

私は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";
}
0
dubversion

これは、ステップごとの変換を実行できるExcelのPower Query機能を使用すると簡単です。

元のファイル:

enter image description here

カスタム列を追加します。

enter image description here

0
asporter

「Content-Disposition」を使用し、HTMLタグを使用してASPからExcelにエクスポートする場合は、そのタグに「style = 'mso-number-format:\ @;'」を追加して、テキスト値のみを受け入れるようにする必要があります。 、それによって先行ゼロの省略が回避されます。フォワードスラッシュ「\」が受け入れられる場合は、ダブルフォワードスラッシュ「\」を使用します

0
ManojKumar