Nếu bạn muốn tải về để được cung cấp như một download có thể được mở trực tiếp trong Excel, điều này có thể làm việc cho bạn: (sao chép từ một dự án chưa được phát hành cũ của tôi)
Những chức năng thiết lập các tiêu đề:
function setExcelContentType() {
if(headers_sent())
return false;
header('Content-type: application/vnd.ms-excel');
return true;
}
function setDownloadAsHeader($filename) {
if(headers_sent())
return false;
header('Content-disposition: attachment; filename=' . $filename);
return true;
}
một này sẽ gửi một CSV để một dòng bằng cách sử dụng kết quả mysql
function csvFromResult($stream, $result, $showColumnHeaders = true) {
if($showColumnHeaders) {
$columnHeaders = array();
$nfields = mysql_num_fields($result);
for($i = 0; $i < $nfields; $i++) {
$field = mysql_fetch_field($result, $i);
$columnHeaders[] = $field->name;
}
fputcsv($stream, $columnHeaders);
}
$nrows = 0;
while($row = mysql_fetch_row($result)) {
fputcsv($stream, $row);
$nrows++;
}
return $nrows;
}
một này sử dụng hàm trên để viết một CSV vào một tập tin, được đưa ra bởi $ filename
function csvFileFromResult($filename, $result, $showColumnHeaders = true) {
$fp = fopen($filename, 'w');
$rc = csvFromResult($fp, $result, $showColumnHeaders);
fclose($fp);
return $rc;
}
Và đây là nơi mà sự kỳ diệu xảy ra;)
function csvToExcelDownloadFromResult($result, $showColumnHeaders = true, $asFilename = 'data.csv') {
setExcelContentType();
setDownloadAsHeader($asFilename);
return csvFileFromResult('php://output', $result, $showColumnHeaders);
}
Ví dụ:
$result = mysql_query("SELECT foo, bar, shazbot FROM baz WHERE boo = 'foo'");
csvToExcelDownloadFromResult($result);
Tại sao câu hỏi này đóng lại không mang tính xây dựng? Điều này là tốt và hoàn toàn rõ ràng. – Mario
@Alec Bởi vì một số người kiểm duyệt ở đây là các nhà siêu âm, bạn biết đấy ... "Với các siêu cường có trách nhiệm lớn!" - Bác Ben – finitenessofinfinity
@finitenessofinfinity bị hỏng, sức mạnh tuyệt đối bị hỏng hoàn toàn. Stackoverflow là một ví dụ tuyệt vời về điều đó. – Mario