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

时间:2015-08-24 02:45:36

标签: php jquery laravel csv datatables

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

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

// datatable plugins

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

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:4)

你可以做的一种方法是使用jQuery并进行ajax调用。

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

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

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

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

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

希望这有帮助。