基于数据表 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? [复制]