将数据从mysql表导出到.csv文件

时间:2013-04-03 13:29:06

标签: php mysql excel csv

我有一个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

那有什么不对,如何在没有逗号的情况下正确显示数字?

1 个答案:

答案 0 :(得分:1)

<强>解释

逗号被视为每行中值的一部分,因此MS Excel在导入时将数据视为字符串....这意味着它将“按原样”存储在单元格中。如果没有逗号,MS Excel会将值作为数字进行处理,使用不显示前导零的常规格式,如果数字超过定义的位数,则会切换为科学格式。

<强>解决方案

为了始终将值视为字符串而不使用逗号,请将值括在双引号中。

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