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

Laravel:将查询数据导出为Excel(替换原PDF导出功能)

把Laravel查询数据导出为Excel替代PDF的解决方案

没问题,咱们直接把你的PDF导出逻辑改成Excel导出就行,Laravel生态里最常用的Excel处理工具是Maatwebsite/Laravel-Excel,步骤很清晰:

第一步:安装Laravel Excel包

首先在项目根目录运行Composer命令安装包:

composer require maatwebsite/excel

(Laravel 9+版本会自动完成服务提供者注册,低版本可能需要手动在config/app.php里配置,不过现在新版本基本都自动处理了)

第二步:创建导出类

用Artisan命令生成一个专门的导出类,这个类负责定义Excel的表头和要导出的数据:

php artisan make:export UsageDataExport

生成的文件在app/Exports/UsageDataExport.php,修改它的内容如下:

<?php

namespace App\Exports;

use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;

class UsageDataExport implements FromCollection, WithHeadings
{
    protected $particulars;

    // 构造函数接收查询到的数据
    public function __construct(Collection $particulars)
    {
        $this->particulars = $particulars;
    }

    // 返回要导出的数据集
    public function collection()
    {
        return $this->particulars;
    }

    // 设置Excel表头
    public function headings(): array
    {
        return [
            'Item Name',
            'Unit',
            'Price',
            'Quantity Issued',
            'Total Cost'
        ];
    }
}

第三步:修改控制器代码

现在把你原来的PDF导出逻辑替换成Excel导出,记得导入必要的命名空间:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
// 导入Excel facade和咱们的导出类
use Maatwebsite\Excel\Facades\Excel;
use App\Exports\UsageDataExport;

class YourControllerName extends Controller // 替换成你的实际控制器名
{
    public function getUsageData(Request $request) {
        $start_date = $request->get('start_date');
        $end_date = $request->get('end_date');
        $particulars = DB::table('particulars')
            ->join('reqs', 'particulars.particular_id', "=", 'reqs.particular_id')
            ->whereBetween('date_applied', [$start_date, $end_date])
            ->select('particulars.item_name', 'particulars.unit', 'particulars.price', 'reqs.quantity_issued', DB::raw('particulars.price*reqs.quantity_issued AS total_cost'))
            ->get();
            
        if ($particulars->isEmpty()) {
            return "No Records Found...................... ";
        } else {
            // 替换PDF导出为Excel下载
            return Excel::download(new UsageDataExport($particulars), 'usage_report.xlsx');
        }
    }
}

这样修改后,用户请求这个接口时,就会自动下载一个名为usage_report.xlsx的Excel文件,里面包含你查询到的所有数据和自定义的表头。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:15:12