是否可以仅导出数据表列的一部分值?
It's possible to export only a portion of the values of a datatable column?
我有一个 datatable
,带有一个按钮,可以使用 pdfmake
将其数据导出到 pdf 文件。到目前为止一直很好,直到我收到向其中一列添加一个值的请求(并且该值不应出现在导出的数据中)。我遇到此问题的专栏具有以下组成:
<td>{{client.lot}}<br><p>{{client.lot.total_negotiations}} client(s) negotiating!</p></td>
(好的,我知道这不是将列的所有单元格分成两行的最佳方法)
我想做的是仅导出带有“第一行”的数据(在 <br>
标记之前)。我怎样才能做到这一点?有什么解决方法可以调整 table 或 pdf?
您可以使用 DataTables 提供的 exportOptions.format()
函数来执行此操作。
例如,假设我们从以下 table 数据开始(其中有 2 个单元格包含需要格式化的数据):
生成的 PDF 将如下所示:
DataTables 配置为:
$(document).ready(function() {
$('#example').DataTable( {
"dom": 'B<"clear">lfrtip',
buttons: [{
extend: 'pdf',
text: 'Save as PDF',
exportOptions: {
modifier: {
page: 'current'
},
format: {
body: function ( data, rowIdx, colIdx ) {
if (colIdx == 1) {
var brIdx = data.indexOf("<br>");
if (brIdx >= 0) {
return data.substring(0, brIdx);
} else {
return data;
}
} else {
return data;
}
}
}
}
}]
} );
} );
这使用一个函数来检查每个单元格的内容。在我的例子中,我忽略了不在列索引 1 中的任何数据(table 中的第 2 列)。
对于此列中的每个数据单元格,我检查数据中是否存在 <br>
标记。如果存在,则丢弃从该标记到字符串末尾的所有数据。
所有其他列中的所有其他单元格将原封不动地传递到 PDF。
您可能需要根据您的具体需要对此进行调整(例如,如果您需要处理多列,可能需要清除“Lote 14 -”等中的尾随连字符)。
您可能还想将导出逻辑移动到它自己的单独函数中,然后改为从 DataTable 配置调用该函数(这样逻辑就不会混淆 DataTable 配置代码)。
有关此导出功能的背景信息可在此处找到:exportData
- 具体而言,请参阅该页面上的 format
部分。这是上例中 exportOptions
配置使用的通用按钮功能。
我有一个 datatable
,带有一个按钮,可以使用 pdfmake
将其数据导出到 pdf 文件。到目前为止一直很好,直到我收到向其中一列添加一个值的请求(并且该值不应出现在导出的数据中)。我遇到此问题的专栏具有以下组成:
<td>{{client.lot}}<br><p>{{client.lot.total_negotiations}} client(s) negotiating!</p></td>
(好的,我知道这不是将列的所有单元格分成两行的最佳方法)
我想做的是仅导出带有“第一行”的数据(在 <br>
标记之前)。我怎样才能做到这一点?有什么解决方法可以调整 table 或 pdf?
您可以使用 DataTables 提供的 exportOptions.format()
函数来执行此操作。
例如,假设我们从以下 table 数据开始(其中有 2 个单元格包含需要格式化的数据):
生成的 PDF 将如下所示:
DataTables 配置为:
$(document).ready(function() {
$('#example').DataTable( {
"dom": 'B<"clear">lfrtip',
buttons: [{
extend: 'pdf',
text: 'Save as PDF',
exportOptions: {
modifier: {
page: 'current'
},
format: {
body: function ( data, rowIdx, colIdx ) {
if (colIdx == 1) {
var brIdx = data.indexOf("<br>");
if (brIdx >= 0) {
return data.substring(0, brIdx);
} else {
return data;
}
} else {
return data;
}
}
}
}
}]
} );
} );
这使用一个函数来检查每个单元格的内容。在我的例子中,我忽略了不在列索引 1 中的任何数据(table 中的第 2 列)。
对于此列中的每个数据单元格,我检查数据中是否存在 <br>
标记。如果存在,则丢弃从该标记到字符串末尾的所有数据。
所有其他列中的所有其他单元格将原封不动地传递到 PDF。
您可能需要根据您的具体需要对此进行调整(例如,如果您需要处理多列,可能需要清除“Lote 14 -”等中的尾随连字符)。
您可能还想将导出逻辑移动到它自己的单独函数中,然后改为从 DataTable 配置调用该函数(这样逻辑就不会混淆 DataTable 配置代码)。
有关此导出功能的背景信息可在此处找到:exportData
- 具体而言,请参阅该页面上的 format
部分。这是上例中 exportOptions
配置使用的通用按钮功能。