Datatables csv下载将自定义列添加到文件中
Datatables csv download add custom columns to file
我已经使用Datatables几天了,我遇到了这个问题:我有一个方法可以从csv文件中的Datatable下载数据,这个表有三列(Id、Type和Quantity):
_mVM.downloadCSV = function (item, event) {
var table = $("#Table" + item.Id()).DataTable();
var contentParts = [], rowParts = [], visibleColumns = [], column, data, field;
var rows = table.rows({ filter: "applied" });
var rowsData = rows.data();
var columns = table.columns();
var columnsCount = columns.data().length;
//Columns and headers
for (var i = 0; i < columnsCount; i++) {
column = table.column(i);
if (column.visible()) {
visibleColumns.push(column.dataSrc());
rowParts.push($(column.header()).html());
}
}
if (rowParts.length > 0) {
contentParts.push(rowParts.join(","));
}
// Rows
for (var rowNum = 0; rowNum < rowsData.length; rowNum++) {
rowParts = [];
for (var j = 0; j < visibleColumns.length; j++) {
field = visibleColumns[j];
data = rowsData[rowNum][field];
rowParts.push($(data).html());
}
contentParts.push(rowParts.join(","));
}
var test = contentParts.join("'n");
var dltrData = test;
var blob = new Blob([dltrData], { type: "text/csv;charset=utf-8;" });
saveAs(blob, item.selsite() + ".csv");
}
问题是,在将要下载的文件中,我需要(手动)添加另一列,一个标题为"Extra"的空列,位于数据表中的列的末尾(该列将是第四列)。是否可以使用相同的方法(downloadCSV)添加它,或者只有Datatable列才能进入该文件?
一种大致类似的方法可能会奏效,其中extraHeader是列的名称,extraRowData是按行顺序排列的列的值的数组。您可能希望使此代码更加健壮。
_mVM.downloadCSV = function (item, event, extraHeader, extraRowData) {
var table = $("#Table" + item.Id()).DataTable();
var contentParts = [], rowParts = [], visibleColumns = [], column, data, field;
var rows = table.rows({ filter: "applied" });
var rowsData = rows.data();
var columns = table.columns();
var columnsCount = columns.data().length;
//Columns and headers
for (var i = 0; i < columnsCount; i++) {
column = table.column(i);
if (column.visible()) {
visibleColumns.push(column.dataSrc());
rowParts.push($(column.header()).html());
}
}
if (extraHeader) rowParts.push(extraHeader);
if (rowParts.length > 0) {
contentParts.push(rowParts.join(","));
}
// Rows
for (var rowNum = 0; rowNum < rowsData.length; rowNum++) {
rowParts = [];
for (var j = 0; j < visibleColumns.length; j++) {
field = visibleColumns[j];
data = rowsData[rowNum][field];
rowParts.push($(data).html());
if(extraRowData && rowNum < extraRowData.length) rowParts.push(extraRowData[rowNum]);
}
contentParts.push(rowParts.join(","));
}
var test = contentParts.join("'n");
var dltrData = test;
var blob = new Blob([dltrData], { type: "text/csv;charset=utf-8;" });
saveAs(blob, item.selsite() + ".csv");
}
相关文章:
- 日食添加文件而不将其复制到工作区中
- 在使用Dropzone.js添加文件之前,是否可以有弹出选项
- plupload添加文件功能
- 如何在python中的硒中添加文件属性到webelement
- 如何在通过 JavaScript 以编程方式添加文件后更新多个输入的文件长度
- 为 v3.4.0 添加文件和文件传输科尔多瓦插件
- Javascript添加文件输入框按钮麻烦
- 拖放区.js删除在页面加载时创建的模拟文件时,会显示默认的添加文件消息
- 使用jQuery向表单添加文件输入
- PlUpload在Jquery UI对话框中不能点击添加文件
- 在JS中添加文件下载时的暂停
- Google Apps Script为用户添加文件夹
- 如何在ajax调用中添加文件数据而不使用FormData
- 动态添加文件到Chrome扩展
- 是否有一种方法来添加文件到HTML5应用程序缓存使用javascript
- 添加文件按钮不工作,如果多于一个(jquery文件上传插件)
- 向当前表单字段添加文件选项
- 添加文件之前进行验证(自定义)
- 如何在动态添加文件输入框上使用Jquery插件上传多文件
- 如何在dat.gui中添加文件夹