ajax导出excel文件php

要通过 AJAX 导出 Excel 文件,你可以使用 PHPExcel 库来生成 Excel 文件,并使用 PHP 将其返回到客户端。

以下是实现的基本步骤:

  • 在 HTML 页面上添加一个按钮或链接,当用户点击时会触发导出 Excel 的操作。在点击事件中使用 AJAX 发送请求到服务器。
  • <button onclick="exportToExcel()">导出 Excel</button>
    
  • 在 JavaScript 中编写 exportToExcel 函数,该函数通过 AJAX 向服务器发送请求。使用 XMLHttpRequest 对象向服务器发送 POST 请求,同时需要将要导出的数据作为请求参数传递给服务器。
  • function exportToExcel() {
        var xhr = new XMLHttpRequest();
        xhr.open('POST', 'export.php');
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        xhr.onload = function() {
            if (xhr.status === 200) {
                // 下载 Excel 文件
                var link = document.createElement('a');
                link.href = 'data:application/vnd.ms-excel;base64,' + xhr.responseText;
                link.download = 'example.xls';
                document.body.appendChild(link);
                link.click();
                document.body.removeChild(link);
            } else {
                alert('导出 Excel 文件失败');
        xhr.send('data=' + JSON.stringify(data));
    

    其中,data 是要导出的数据,可以将其转换为 JSON 格式并作为请求参数发送给服务器。

  • 在服务器端的 export.php 文件中,使用 PHPExcel 库生成 Excel 文件,并将其返回给客户端。可以使用 PHPExcel_Writer_Excel5 类将 Excel 文件保存为 .xls 格式。
  • require_once 'PHPExcel/PHPExcel.php';
    require_once 'PHPExcel/PHPExcel/Writer/Excel5.php';
    // 从请求参数中获取要导出的数据
    $data = json_decode($_POST['data'], true);
    // 创建 Excel 对象
    $excel = new PHPExcel();
    $sheet = $excel->getActiveSheet();
    // 在 Excel 中添加数据
    for ($i = 0; $i < count($data); $i++) {
        $sheet->setCellValue('A' . ($i + 1), $data[$i]['name']);
        $sheet->setCellValue('B' . ($i + 1), $data[$i]['age']);
    // 设置 HTTP 响应头,告诉浏览器返回的是一个 Excel 文件
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename="example.xls"');
    header('Cache-Control: max-age=0');
    // 将 Excel 文件输出到客户端
    $writer = new PHPExcel_Writer_Excel5($excel);
    $writer->save('php://output');
    

    在服务器端,首先从请求参数中获取要导出的数据,然后创建 PHPExcel 对象,将数据添加到 Excel 中。最后,将 Excel 文件输出到客户端。

    以上是一个简单的例子,你可以根据自己的需求和数据格式进行修改。需要注意的是,PHPExcel 库是一个比较老的库,最后的更新时间是 2015 年,可能不支持最新的 Excel 文件格式。如果你需要支持最新的 Excel 文件格式,可以考虑使用其他 PHP Excel 库,如 PHPOffice/PhpSpreadsheet。

  •