2013-03-19 82 views
0

一切正常,但我在將數據導出到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

回答

1

問題是你的假設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