Php 将数据库查询结果导出到Excel时出现问题

Php 将数据库查询结果导出到Excel时出现问题,php,Php,我需要将MySQL查询的结果导出到Excel文件。我选择了一些代码来实现这一点,但有一个问题。代码使用.xls内容类型和标题后面的查询结果将标题信息发送到浏览器。被调用页面的代码如下所示: <?php function cleanData(&$str) { $str = preg_replace("/\t/", "\\t", $str); $str = preg_replace("/\r?\n/", "\\n", $str); if(strstr($str, '"')) $str

我需要将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";
?>

此问题是由于将ajax数据传递到创建.xls数据的外部页面引起的。答案是关闭链接中的ajax数据:

<a href="something.php" data-ajax="false">

是您应该使用的。这可能是最好的选择。

不知道从哪里获取的,但命名文件.xls并不能使其成为excel文件。不妨把它命名为sex.mp4,然后看它神奇地变成色情视频。这是我用来制作有效excel文件的库:。。如果您不需要任何格式,为什么不创建一个csv,它可以与excel和许多其他应用程序兼容?用户特别想要一个.xls文件。代码可以工作,只是在刷新页面之前不会发送标题信息。这是我想不出来的部分“如果这是您对工作的定义,那么它肯定不会创建有效的excel文件……好的,语义。它不创建文件:true。它确实下载在Excel中打开的数据。这已经足够接近了。问题是,它并没有像它应该做的那样自动完成。我要试试phpexcel。我相信这会奏效的。
<a href="something.php" data-ajax="false">