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

Export CSV or PDF Based On Datatables Laravel 4

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

如何使用 laravel 基于数据 tables 插件导出到 csv/pdf?

//数据table 插件

<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);
}

我可能 post 我的服务器的关键字和 运行 sql 查询再次过滤这些结果,然后创建 csv/pdf

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

首先,给table一个ID。接下来,获取 table 本身并使用以下代码获取其 HTML:

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

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

然后您应该取回与您在屏幕上显示的 table 完全相同的 PDF(使用任何过滤器等)。

作为旁注,您还可以将 CSS 添加到 HTML 以提供给 PDF 库,它甚至可以使 table 的样式也相同!

希望对您有所帮助。