你可以根据 Laravel 中的选择导出 excel 电子表格吗?

Posted

技术标签:

【中文标题】你可以根据 Laravel 中的选择导出 excel 电子表格吗?【英文标题】:Can you export excel spreadsheets based on a selection in Laravel? 【发布时间】:2021-07-27 15:01:49 【问题描述】:

我有一个单选组,可以过滤我的表格以显示项目是活动的、非活动的还是两者兼而有之。还有一个按钮,我用来导出表格的 excel 文档。我当前的按钮下载所有记录。我想要的是基于过滤器导出文档,因此如果选择并显示活动并按下下载按钮,则只会导出活动记录

我的代码: 控制器:

public function filter()

    $energy = Energy::where('isredundant', 0)->paginate(10);
    return view('admin.staff', ['staff1' => $staff1]);


public function filtered()

    $energy = Energy::where('isredundant', 1)->paginate(10);
    return view('admin.staff', ['staff1' => $staff1]);


public function export()

    return Excel::download(new UsersExport, 'allrecords.xlsx');


public function export()

    return Excel::download(new UsersExport, 'AllReport.xlsx');


public function exportactive()

    return Excel::download(new UsersExportactive, 'ActiveRecords.xlsx');


public function exportredundant()

    return Excel::download(new UsersExportredundant, 'RedundantRecords.xlsx');

我的按钮:

<div>    <a class="btn btn-warning" href="/export_excel/excel">Generate Report</a></div>

我尝试使用 3 个不同的按钮,但看起来很乱。我敢肯定有一个更简单的方法

【问题讨论】:

对于初学者,您的两个方法具有相同的名称:export。这需要解决。 我想通了 欢迎,为了改善您在 SO 上的体验,请 take the tour 并阅读 how to ask、On Topic question,然后查看 Question Check list、perfect question 以及如何创建 @987654326 @ 从昨天开始,来自另一个帐户的问题敲响了 :) 你能链接这样的问题吗?本来会有更多帮助 【参考方案1】:
<input type="radio" name="download" id="x86"/>active<br />
<input type="radio" name="download" id="x64"/>inactive<br />
<input type="button" id="download" value="download"/>
var radio_x86 = document.getElementById('x86');
var radio_x64 = document.getElementById('x64');

var button = document.getElementById('download');

button.onclick = downloadFile;

function downloadFile() 
    if (radio_x86.checked) 
        window.open("/app/test");
     else if (radio_x64.checked) 
        window.open("/app/test1");
     else 
        alert("Please check one of the options first.");
    

【讨论】:

您确实需要解决您的命名方案...您有两个具有一个名称的收音机和一个带有该名称 ID 的按钮。它不会导致编程问题,但它只是令人困惑。更不用说您使用 Windows 操作系统 32 位和 64 位命名无线电(x86 和 x64),但似乎这些无线电与活动和非活动有关。我猜你从某个地方复制了这个代码示例并且没有更新名称。 这里的问题和答案之间的联系非常微妙! @JustCarty 命名方案已更改,这是出于测试目的,因此名称不是真正值得关注的原因【参考方案2】:

你可以试试这个方法

在控制器中

public function exportactive(Request $request)

    return Excel::download(new UsersExportactive($request->ids), 'ActiveRecords.xlsx');

在 UsersExportactive() 类中

private $ids;

public function __construct($ids)

    $this->ids = $ids;

并在 UsersExportactive() 类中进行类似的查询

Model::whereIn('id',$ids)->get();

并在视图中使用您的导出按钮作为提交按钮,如下所示

<form>
<input type="checkbox" name="ids[]" id="1"/>active
<input type="checkbox" name="ids[]" id="2"/>inactive
<input type="submit" id="download" value="download Excel"/>
</form> 

【讨论】:

以上是关于你可以根据 Laravel 中的选择导出 excel 电子表格吗?的主要内容,如果未能解决你的问题,请参考以下文章

PHP laravel框架 导入导出excel ,phpexcel数据导出分多个工作区(sheet)

java实现,根据页面上的复选框选择项,来确定导出Excel数据

mysql数据库中的表格数据如何导入wps中的excel,请问该怎么去做

选择数组中的值,分离并查询数据库 laravel

如何导出SHP文件中的点坐标

如何根据用户在 Laravel 5 中的角色选择用户?