首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在laravel中将数据库结果导出为excel文件?

如何在laravel中将数据库结果导出为excel文件?
EN

Stack Overflow用户
提问于 2021-05-08 15:21:29
回答 1查看 69关注 0票数 0

我正在导出mysql数据库数据到excel在laravel使用data网站。我搞不懂为什么我的文件是在点击按钮时下载的。这是我的代码。我得到了成功响应,但无法下载文件。我正试图通过点击按钮来下载excel文件。

ExportOrders.php

代码语言:javascript
运行
复制
<?php
    
namespace App\Exports;
    
use Maatwebsite\Excel\Concerns\FromCollection;
use DB;
    
class ExportOrders implements FromCollection
{
    /**
     * @return \Illuminate\Support\Collection
     */
    protected $fromDate, $toDate;

    public function __construct(String $fromDate, String $toDate) 
    {
        $this->fromDate = $fromDate;
        $this->toDate = $toDate;
    }
    
    public function collection()
    {
        //
        $orders = DB::table('orders')
                    ->join('table_users', 'table_users.id', '=', 'orders.user_id')
                    ->select('orders.*','table_users.name')
                    ->whereBetween('orders_date', [$this->fromDate, $this->toDate])
                    ->get();

        return $orders;
    }
}

控制器

代码语言:javascript
运行
复制
<?php
    
namespace App\Http\Controllers;
    
use Illuminate\Http\Request;
use DB;
use Maatwebsite\Excel\Facades\Excel;
use App\Exports\ExportOrders;
    
class OrderController extends Controller
{
    public function export_to_excel(Request $request)
    {
        $from_date = $request->from_date;
        $to_date = $request->to_date;

        return Excel::download(new ExportOrders($from_date, $to_date), 'orders.xlsx');     
    }
}

刀片代码

代码语言:javascript
运行
复制
<div class="container" style="padding-bottom: 20px;padding-top: 20px;">
    <div class="row">
        <div class="col-sm-3">
            <input type="date" class="form-control" name="from_date" id="from_date">
        </div>
        <div class="col-sm-3">
            <input type="date" class="form-control" name="to_date" id="to_date">
        </div>
        <div class="col-sm-3">
            <a type="submit" class="btn btn-info export_to_excel">Export to Excel</a>
        </div>
        <div class="col-sm-3">
            <a type="submit" class="btn btn-info">Export to PDF</a>
        </div>
    </div>
</div>
</div>

脚本:

代码语言:javascript
运行
复制
$(document).on('click', '.export_to_excel', function() {
    var from_date = $('#from_date').val();
    var to_date = $('#to_date').val();
    
    $.ajax({
        type: 'get',
        url: '/export-to-excel',
        data: {
            'from_date': from_date,
            'to_date': to_date
        },
        success: function(data) {
            console.log(data);
            alertify.set('notifier', 'position', 'bottom-center');
            alertify.success(data.success);
        }
    });
});
EN

回答 1

Stack Overflow用户

发布于 2021-05-08 16:06:04

正如我所评论的,laravel excel库并不是用来和javascript一起使用的。如果你想在两种格式(excel,pdf)之间进行选择,你可以在一个表单中完成。

您可以添加第三个输入(例如<select><input type="radio"> ),让用户选择格式。

或者你可以给你的提交按钮命名。

最小路由和最小形式

代码语言:javascript
运行
复制
Route::post('export', [OrderController::class, 'export'])->name('export');
代码语言:javascript
运行
复制
<form action="{{ route('export') }}" method="post">
    @csrf
    <input type="date" id="from" name="from_date" onchange="$('#to').attr('min', this.value);" required>
    <input type="date" id="to" name="to_date" onchange="$('#from').attr('max', this.value);" required>
    <button type="submit" name="export_type" value="excel">Export to Excel</button>
    <button type="submit" name="export_type" value="pdf">Export to PDF</button>
</form>
代码语言:javascript
运行
复制
class OrderController extends Controller
{
    public function export(Request $request)
    {
        if ($request->export_type === 'excel') {
            return Excel::download(new ExportOrders($request->from_date, $request->to_date), 'orders.xlsx');
        } elseif ($request->export_type === 'pdf') {
            // return pdf download
        } else {
            // throw/log error
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67445045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档