0

ユーザーの携帯電話番号を保存する mysql テーブルがあり、php を使用してこれらの番号のみを .csv ファイルにエクスポートしたいのですが、各番号の末尾にコンマを使用したくありません。ここで、テーブルに次の 3 つの数値が格納されているとします。

123456789
+966123456789  
00966123456789

次のコードを使用した場合:

$result = mysql_query("SELECT cellphone FROM user");
if ($result) {
    while ($row = mysql_fetch_array($result)) {
        $cellphones .= $row["cellphone"] . ",\r\n"; //note the comma here
    }
}

$filename = "cellphones_" . date("Y-m-d_H-i");
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header("Content-disposition: filename=" . $filename . ".csv");
print $cellphones;
exit;

次のような数字を含む .csv ファイルを取得します。

+966123456789,
00966123456789,
123456789,

しかし、次のようにコンマなしで同じコードを使用した場合:

    $cellphones .= $row["cellphone"] . "\r\n";

それ以外の:

    $cellphones .= $row["cellphone"] . ",\r\n"; //note the comma here

.csv ファイルの数値は次のようになります。

9.66123E+11
9.66123E+11
123456789

では、何が間違っているのでしょうか?コンマなしで数字を正しく表示するにはどうすればよいでしょうか?

4

1 に答える 1

1

説明

カンマは各行の値の一部として扱われるため、MS Excel はインポート時にデータを文字列として扱います。つまり、「そのまま」セルに格納されます。カンマがない場合、MS Excel は値を数値として扱い、先頭のゼロを表示しない一般的な書式を使用し、数値が定義された桁数を超えると指数形式に切り替えます。

解決

コンマなしで値を常に文字列として扱うには、値を二重引用符で囲みます。

$cellphones .= '"' . $row["cellphone"] . '"' . "\r\n";
于 2013-04-03T13:40:20.887 に答える