我需要将 MySQL 查询的结果导出到 Excel 文件。我拿起了一些代码来实现这一点,但有一个问题。该代码将带有 .xls 内容类型的标头信息和标头后面的查询结果发送到浏览器。被调用页面的代码如下:
<?php
function cleanData(&$str)
{
$str = preg_replace("/\t/", "\\t", $str);
$str = preg_replace("/\r?\n/", "\\n", $str);
if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';
}
// filename for download
$filename = "customer_inventory_" . date('Ymd') . ".xls";
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Content-Type: application/vnd.ms-excel");
$flag = false;
$query = "SELECT customer_id,sku,qtyoh,date FROM sims_customer_inventory WHERE customer_id=$customer_id and date=(select max(date) from sims_customer_inventory)";
$result = mysql_query($query, $conn) or die(mysql_error());
while(false !== ($row = mysql_fetch_assoc($result))) {
if(!$flag) {
// display field/column names as first row
echo implode("\t", array_keys($row)) . "\r\n";
$flag = true;
}
array_walk($row, 'cleanData');
echo implode("\t", array_values($row)) . "\r\n";
?>
问题是当以这种形式调用页面时:
<form action="inventory_download.php" method="get" onsubmit="return validateInventoryform();">
该文件不会自动下载。但是,当我刷新页面时,文件会下载。我的问题是,当页面被调用时,它应该自动执行代码来下载文件。它不这样做。我已经查看了整个互联网以解决问题,但我无法找出它为什么不起作用。