You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将搜索结果导出至Excel文档?附搜索栏代码求助

解决搜索结果导出到Excel的问题

嘿,这完全可行的!你已经搞定了搜索栏和Excel写入工具的基础部分,现在只需要把搜索到的结果集传递给Excel工具就行,咱们一步步来捋清楚:

第一步:把搜索结果收集到数组里

你现有的查询已经能获取到匹配的记录,接下来把这些记录存到一个数组中,方便后续Excel工具调用处理:

<?php 
include ('database_conn.php'); 
$output = ''; 
$results = []; // 新增数组用来存储搜索结果
if(isset($_POST['search'])) { 
    $search = $_POST['search']; 
    $search = preg_replace("#[^0-9a-z]i#","", $search); 

    // 推荐用预处理语句防止SQL注入(替换你原来的mysqli_query写法)
    $stmt = $conn->prepare("SELECT * FROM attendance WHERE stud_id LIKE ?");
    $searchParam = "%$search%";
    $stmt->bind_param("s", $searchParam);
    $stmt->execute();
    $result = $stmt->get_result();

    // 把查询结果转成关联数组,方便后续遍历
    while ($row = $result->fetch_assoc()) {
        $results[] = $row;
    }
    $stmt->close();
}
?>

第二步:将结果数组传给Excel写入工具

假设你用的是主流的PhpSpreadsheet工具,下面是一个简单示例,把$results数组里的数据写入Excel并触发浏览器下载:

// 引入PhpSpreadsheet(如果是其他Excel工具,替换成对应的初始化代码)
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

// 初始化Excel对象
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();

// 写入表头(根据你的attendance表实际字段调整)
$sheet->setCellValue('A1', '学生ID');
$sheet->setCellValue('B1', '姓名');
$sheet->setCellValue('C1', '考勤日期');
$sheet->setCellValue('D1', '考勤状态');

// 遍历结果数组,逐行写入数据
$currentRow = 2; // 从第二行开始写数据(第一行是表头)
foreach ($results as $record) {
    $sheet->setCellValue('A' . $currentRow, $record['stud_id']);
    $sheet->setCellValue('B' . $currentRow, $record['name']); // 替换成你表中的实际字段
    $sheet->setCellValue('C' . $currentRow, $record['attendance_date']);
    $sheet->setCellValue('D' . $currentRow, $record['status']);
    $currentRow++;
}

// 设置响应头,让浏览器识别并下载Excel文件
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="考勤搜索结果.xlsx"');
header('Cache-Control: max-age=0');

// 输出Excel文件到浏览器
$writer = new Xlsx($spreadsheet);
$writer->save('php://output');
exit;

关键提示

  • 如果你的Excel工具是其他库(比如旧版PHPExcel),只需要把遍历$results数组写入单元格的逻辑适配过去就行,核心思路完全一致。
  • 一定要用预处理语句替代直接拼接SQL的写法,这能有效避免SQL注入风险,是生产环境的必备最佳实践。

内容的提问来源于stack exchange,提问作者harry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:13:18