基于数据表 Laravel 4 导出 CSV 或 PDF

Posted

技术标签:

【中文标题】基于数据表 Laravel 4 导出 CSV 或 PDF【英文标题】:Export CSV or PDF Based On Datatables Laravel 4 【发布时间】:2015-11-17 08:59:38 【问题描述】:

我有一个数据表,其中包含从数据库中检索到的数据。当我在搜索文本框中输入一些关键字时(搜索文本框是由数据表生成的),表格的结果会发生变化。这很好。但是当我单击导出到 csv 或 pdf 时,csv 或 pdf 中的结果将从数据库而不是数据表中检索。

如何使用 laravel 基于 datatables 插件导出为 csv/pdf?

//数据表插件

<link href="plugins/datatables/dataTables.bootstrap.css" rel="stylesheet" type="text/css" />
<script src="plugins/datatables/jquery.dataTables.min.js" type="text/javascript"></script>
<script src="plugins/datatables/dataTables.bootstrap.min.js" type="text/javascript"></script>

//php

public function sales_csv()    

    // columns      
    $arrSelectFields = array(
        -- columns --
    );

    // query
    -- sql queries --

    // passing the columns which I want from the result set. Useful when we have not selected required fields
    $arrColumns = $arrSelectFields;

    // define the first row which will come as the first row in the csv
    $arrFirstRow = $arrSelectFields;

    // building the options array
    $options = array(
        'columns' => $arrColumns,
        'firstRow' => $arrFirstRow,
    );
    // creating the Files object from the Utility package.
    $Files = new Files;
    return $Files->convertToReportsSalesCSV($query, $options);

【问题讨论】:

可以使用datatables插件tableTools本地获取csv @charlietfl 我提到了这个datatables.net/extensions/tabletools 并进行了测试。我输入了关键字,但它仍然导出整个结果 你可以使用 dompdf 库还是必须坚持使用数据表? @mdamia 稍后会检查 dompdf。我使用数据表是因为它内置了排序和搜索功能 【参考方案1】:

我可能会将关键字发布到我的服务器并再次运行 sql 查询过滤这些结果,然后创建 csv/pdf

【讨论】:

谢谢晨露。我在表单中编写了 csv 按钮,并将所有过滤条件设置为隐藏字段,然后传递给 laravel。谢谢! :D【参考方案2】:

一种方法是使用 jQuery 并进行 ajax 调用。

首先,给表格一个 ID。接下来,获取表格本身并使用以下代码获取其 html

var html = $('#myCoolTable').html();

然后对 Laravel 进行 ajax 调用以生成通过 HTML 传递的 PDF。您可以使用此 HTML 转 PDF 库:http://wkhtmltopdf.org/

然后,您应该使用屏幕上的确切表格(使用任何过滤器等)返回 PDF。

作为旁注,您还可以将 CSS 添加到 HTML 以提供给 PDF 库,它甚至会将表格样式设置为相同!

希望这会有所帮助。

【讨论】:

以上是关于基于数据表 Laravel 4 导出 CSV 或 PDF的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Excel 实现 Excel-CSV 文件导入导出功能

如何在 yajra 数据表 laravel 8 的 html 中隐藏描述列但在导出 CSV 中显示

如何在 laravel 中使用 ajax 有条件地导出 CSV? [复制]

如何更改csv导出的列的格式-Laravel Excel

在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能

在 Laravel 5 中使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能(转)