2009-10-29 55 views

Trả lời

11
$query = "SELECT * FROM table_name"; 

$export = mysql_query ($query) or die ("Sql error : " . mysql_error()); 

$fields = mysql_num_fields ($export); 

for ($i = 0; $i < $fields; $i++) 
{ 
    $header .= mysql_field_name($export , $i) . "\t"; 
} 

while($row = mysql_fetch_row($export)) 
{ 
    $line = ''; 
    foreach($row as $value) 
    {            
     if ((!isset($value)) || ($value == "")) 
     { 
      $value = "\t"; 
     } 
     else 
     { 
      $value = str_replace('"' , '""' , $value); 
      $value = '"' . $value . '"' . "\t"; 
     } 
     $line .= $value; 
    } 
    $data .= trim($line) . "\n"; 
} 
$data = str_replace("\r" , "" , $data); 

if ($data == "") 
{ 
    $data = "\n(0) Records Found!\n";       
} 

header("Content-type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=your_desired_name.xls"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 
print "$header\n$data"; 
+0

Sự kết hợp giữa ArneRie và câu trả lời của bạn hoạt động hoàn toàn tốt – Arc

5

ehm?

<a href="yourexport.php" title="export as csv">Export as CSV</a> 

và nếu bạn đang tìm kiếm kịch bản Mà có thể làm điều này:

$myArray = array(); 

$fp = fopen('export.csv', 'w'); 

foreach ($myArray as $line) { 
    fputcsv($fp, split(',', $line)); 
} 

fclose($fp); 
+0

lưu ý: fputcsv chỉ hoạt động trên PHP5. – Raptor

+0

chia không được dùng nữa ... – Raja

3

CSV = Comma Values ​​Ly = Tách giá trị của bạn với dấu phẩy

bạn có để echo/in dòng kết quả của bạn theo dòng, được phân tách bằng dấu phẩy (,).

tôi giả sử $ query của bạn là tập hợp kết quả của truy vấn của bạn, đó là một mảng kết hợp:

while($query = mysql_fetch_assoc($rs)) { 
    // loop till the end of records 
    echo $query["field1"] . "," . $query["field2"] . "," . $query["field3"] . "\r\n"; 
} 

nơi $ rs là handle tài nguyên.

Để cho phép trình duyệt bật lên một hộp tải về, bạn phải thiết lập các tiêu đề ở đầu file (giả định tên tập tin của bạn là export.csv):

header("Expires: 0"); 
header("Cache-control: private"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Content-Description: File Transfer"); 
header("Content-Type: application/vnd.ms-excel"); 
header("Content-disposition: attachment; filename=export.csv"); 

Vậy là xong!

p.s. Phương thức này sẽ không để lại một tệp vật lý nào trong máy chủ. Nếu bạn dự định tạo một tệp trong máy chủ, hãy sử dụng các hàm fopen và fwrite truyền thống.

Các vấn đề liên quan