2011-11-10 112 views
1

我創建了一個Web應用程序,我想補充像用戶功能可以將所選記錄導出...輸出記錄文件

Check Box Name Email 

      Sumit [email protected] 
      Karan [email protected] 

我想這個記錄導出到Excel文件,但只有應該導出選定的記錄。

在此先感謝

+2

您可以使用PHPExcel http://phpexcel.codeplex.com/,但您的問題是太位開放... – Molochdaa

+0

可能重複的[導出mysql結果爲Excel](http://stackoverflow.com/questions/1475441/export-mysql-result-to-excel) – hakre

+0

@hakre - 不要複製到該問題。這是針對特別複雜的腳本。 – evan

回答

6

無需下載外部庫 - 您所需的所有內容都已內置到PHP中。

步驟:

    在PHP中得到你想要的輸出
  1. 待辦事項查詢可以使用SELECT * FROM table WHERE id IN (1,2,...)
  2. 使用mysql_fetch_array()mysql_fetch_assoc()同時獲得行一個
  3. 使用fputcsv()將它們輸出到以csv結尾的文件 - 這將正確地逃脫您的數據

http://www.php.net/manual/en/function.mysql-fetch-array.php
http://php.net/manual/en/function.fputcsv.php

Excel將能夠讀取文件。

覆蓋缺省值fputcsv以使用製表符作爲分隔符,Excel將更容易讀取文件。如果您使用逗號(默認),則可能需要在Excel導入中選擇逗號作爲分隔符。

這裏的工作的例子假設你已經有行設置:

$rows; // predefined 
$filename = 'webdata_' . date('Ymd') . '.csv'; 

header("Content-Disposition: attachment; filename=\"$filename\""); 
header("Content-Type: application/octet-stream"); 
// that indicates it is binary so the OS won't mess with the filename 
// should work for all attachments, not just excel 

$out = fopen("php://output", 'w'); // write directly to php output, not to a file 
foreach($rows as $row) 
{ 
    fputcsv($out, $row); 
} 
fclose($out); 
+0

非常感謝你我會檢查它.. – SB24

+0

在我多年的PHP中,我從來沒有真正使用fputcsv--通常是因爲我通常避免創建物理文件,但這也許是很好的解決方案。但是,我不認爲excel使用製表符會有問題,而不是逗號。它應該自動檢測分隔符,所以我不希望需要進行配置更改。但是,里程可能會有所不同。非常好的答案,但:-) – WhiskeyTangoFoxtrot

+1

Excel使用標籤更好。有點奇怪,因爲csv代表逗號分隔值。看到這個例子,不需要先輸出到文件。直接輸出到php標準輸出。 – evan

1

您可以安裝和使用非常漂亮的PHP EXEL庫導入EXEL EXEL文件以及出口數據。

此處瞭解詳情: http://phpexcel.codeplex.com/

否則這個問題本身是一個比較含糊所以這就是我能說的。 :/

+0

非常感謝您的信息 – SB24

0

如果您以CSV格式將數據發送到瀏覽器(例如,implode()將結果集數組中的每個條目與\ t分開並將每行與\ n分隔),Excel可以輕鬆地將其轉換爲可以使用的東西當文檔被加載時。

但是請注意,您必須告訴瀏覽器它正在加載的文檔是一個excel文件,因此它知道使用excel來加載文件。通過提供內容類型和內容處置頭,像這樣做:

header('Content-type: application/vnd.ms-excel'); 
header("Content-Disposition: attachment; filename=exportExcel.xls"); 

請確保您撥打的報頭()函數您發送CSV'd文本之前。

注:我選擇\ t(製表符)分隔每個字段,而不是逗號,因爲在我的經驗,他們已經造成的問題,因爲它可能是常見的一個字段包含在它的逗號...但也許不在你的特定情況下。

+0

作爲一個說明,這將不會有任何花哨的格式或表格裝箱。卡米爾的圖書館可能會提供。我的方法只是做一個簡單的直接導出。 – WhiskeyTangoFoxtrot

+0

非常感謝你 – SB24

+0

不客氣!歡迎來到stackoverflow - 請記住選擇好的答案以及接受的答案。 :-) – WhiskeyTangoFoxtrot

0

假設你的mysql數據庫是同一臺服務器上的虛擬主機上,那麼你就應該能夠使用「選擇INTO OUTFILE 「在mysql中的方法。 http://dev.mysql.com/doc/refman/5.1/en/select-into.html

您可以創建一個CSV文件中使用這種語法(在Excel將打開):

SELECT * FROM people INTO OUTFILE '/www/your/output/directory/output.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'; 

然後你就可以讓人們使用這樣的PHP文件下載:

header("Content-type: application/csv"); 
header("Content-Disposition: attachment; filename=/www/your/output/directory/output.csv"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 

這個最後一部分來自其他崗位 - >create csv file