2013-04-03 40 views
0

我有一个mysql表格,用于存储用户的手机号码,现在我只想使用php将这些数字导出到.csv文件,而我不希望在每个数字的末尾使用逗号。现在假设我已经保存在我的表在未来3个数字:从mysql表导出数据到一个.csv文件

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 

那么,什么是错了,我怎样才能得到这些数字正确显示没有逗号?

+0

这是Excel的问题,而不是您的CSV,我怀疑。尝试在记事本中查看文件以查看您正在生成的内容。 – andrewsi

+0

$手机。='“'。$ row [”cellphone“]。'”'。为 “\ r \ n” 个; –

+0

@andrewsi我已经试图将这些数字导出为一个.txt文件,而不用逗号,它可以很好地工作。正如我所解释的,当我尝试将它们导出到.csv文件时,出现问题。 – Amr

回答

1

说明

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

解决方案

为了始终把值作为一个字符串,没有逗号,请用双引号的值。

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