CSV输出到几列

问题描述:

一切正常,但我在将数据导出到CSV文件时遇到了问题。我试图寻找类似的问题,但我没有发现任何可能与我的问题有关的问题。CSV输出到几列

这里该代码应该将整个数据库表从MySQL数据库中导出。它完美地实现了,但事实是,它将所有数据放在第一列 - 在不同的单元格中。 单元格的位置是可以的,但它应该将数据分散到多列(我的情况是13)。

这里的截图来解释发生了什么:

enter image description here 代码:

<?php 
header("Content-type: application/vnd.ms-excel"); 
header("Content-disposition: filename=export.csv"); 

#$query=mysql_query("set names 'utf8'"); 
#mb_http_output('UTF-8'); 
#mb_http_input('UTF-8'); 
#mb_language('uni'); 
#mb_regex_encoding('UTF-8'); 
#ob_start('mb_output_handler'); 
#header('Content-type: text/html; charset=utf-8'); 

$conn = mysql_connect('localhost', 'root', 'asdasd') or die(mysql_error()); 
mysql_select_db('nooruse', $conn) or die(mysql_error($conn)); 

$query = sprintf('SELECT osakond as Osakond, soetusaasta as Soetusaasta, it_number as IT_Number, tooteruhm as Tooteruhm, mudeli_nimetus as Mudeli_nimetus, sn as SN, riigivara_nr as Riigivara_nr, inventaari_nr as Inventari_nr, maja as Maja, ruum as Ruum, vastutaja as Vastutaja, markus as Markus,kasutajanimi as Kasutajanimi FROM norse5_proov'); 
$result = mysql_query($query, $conn) or die(mysql_error($conn)); 

$row = mysql_fetch_assoc($result); 
if ($row) { 
    echocsv(array_keys($row)); 
} 

while ($row) { 
    echocsv($row); 
    $row = mysql_fetch_assoc($result); 
} 

function echocsv($fields) 
{ 
    $separator = ''; 
    foreach ($fields as $field) { 
     if (preg_match('/\\r|\\n|,|"/', $field)) { 
      $field = '"' . str_replace('"', '""', $field) . '"'; 
     } 
     echo $separator . $field; 
     $separator = ','; 
    } 
    echo "\r\n"; 
} 

在此先感谢。

+0

我认为上面的代码工作正常。你需要在Excel中检查你的csv分隔符....... – 2013-03-19 09:04:27

问题是你的假设Excel中知道,一个分号分隔。

对于一些机器可能工作,其他机器不可以。

有人建议这与下列表分隔控制面板区域设置的事情。

我发现了一个建议增加以下内容作为CSV的第一行告诉Excel中使用的分隔符:

月=;

还没有试过这个,但它似乎合法。

这里是一个更好的描述的链接(见第三评论下来,设置分离的CSV文件,以避免客户端计算机更改的方式):

Trouble with Opening CSV Files with Excel? The Comma and Semicolon Issue in Excel due to Regional Settings for Europe

+0

分隔符应该是逗号。它在代码中表示如此,我检查了excel设置。 “使用系统分隔符”框被打勾。我解决了它并填充“小数分隔符”为“,”但这并不好。 我会给“sep:”一个试试看。 – 2013-03-19 09:26:46