Php 将数据导出为excel文件

Php 将数据导出为excel文件,php,jquery,ajax,Php,Jquery,Ajax,我可以通过简单的代码轻松地将数据导出为excel,但当我需要调用export.php by j查询代码时,我遇到了一个问题。数据没有下载为export.php文件代码,如下所示 <?php include '../../config.php'; function cleanData(&$str) { if($str == 't') $str = 'TRUE'; if($str == 'f') $str = 'FALSE'; if(preg_match("/^

我可以通过简单的代码轻松地将数据导出为excel,但当我需要调用export.php by j查询代码时,我遇到了一个问题。数据没有下载为export.php文件代码,如下所示

<?php
include '../../config.php';
function cleanData(&$str)
{
    if($str == 't') $str = 'TRUE';
    if($str == 'f') $str = 'FALSE';
    if(preg_match("/^0/", $str) || preg_match("/^\+?\d{8,}$/", $str) || preg_match("/^\d{4}.\d{1,2}.\d{1,2}/", $str)) {
        $str = "'$str";
    }
    if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';
    $str = mb_convert_encoding($str, 'UTF-16LE', 'UTF-8');
}

$filename = "website_data_" . date('Ymd') . ".csv";
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Content-Type: text/csv<span>; charset=UTF-16LE</span>");

$out = fopen("php://output", 'w');

$flag = false;
$result = mysql_query("SELECT * FROM employee") or die('Query failed!');
while(false !== ($row = mysql_fetch_assoc($result))) {
    if(!$flag) {
        fputcsv($out, array_keys($row), ',', '"');
        $flag = true;
    }
    array_walk($row, 'cleanData');
    if($row['photo']!='')
    {
        $row['photo']="http://localhost/admin/employee_image/".$row['photo'];
    }
    fputcsv($out, array_values($row), ',', '"');
}
fclose($out);
exit;

不您不能通过使用jQuery或任何其他库的Javascript实现这一点,AJAX调用浏览器内Javascript引擎中的数据

但您可以使用HTML5下载属性:

<a href="your_file.xls" download="YourFile.xls">Download Excel</a>
编辑:

尽管上述方法可行,但我收回我的话,因为我发现:

如果你需要的话,向他寻求帮助


干杯

你的意思是这里的ajax调用?是的,我的意思是这里的ajax调用,我需要提供php文件路径?我需要在标记中传递一些会话值,以便获取数据。我可以在标记中发布数据吗?如果你想发布数据,你必须制作一个表单,您可以通过在HREF中生成查询字符串来发送GET参数,然后生成表单并将其发布到您的urlno我需要基于ajax调用导出数据php中有任何解决方案吗
header("Content-Type:   application/vnd.ms-excel; charset=utf-8");
header("Content-Disposition: attachment; filename=your_file.xls"); 
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);