Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Datatables csv下载将自定义列添加到文件_Javascript_Csv_Datatable_Datatables - Fatal编程技术网

Javascript Datatables csv下载将自定义列添加到文件

Javascript Datatables csv下载将自定义列添加到文件,javascript,csv,datatable,datatables,Javascript,Csv,Datatable,Datatables,我使用Datatables已经有几天了,我遇到了这个问题: 我有一个方法可以从csv文件中的Datatable下载数据,该表有三列(Id、类型和数量): \u mVM.downloadCSV=功能(项目、事件){ var table=$(“#table”+item.Id()).DataTable(); var contentParts=[]、rowParts=[]、visibleColumns=[]、列、数据、字段; var rows=table.rows({filter:“applicated

我使用Datatables已经有几天了,我遇到了这个问题: 我有一个方法可以从csv文件中的Datatable下载数据,该表有三列(Id、类型和数量):

\u mVM.downloadCSV=功能(项目、事件){
var table=$(“#table”+item.Id()).DataTable();
var contentParts=[]、rowParts=[]、visibleColumns=[]、列、数据、字段;
var rows=table.rows({filter:“applicated”});
var rowsData=rows.data();
var columns=table.columns();
var columnsCount=columns.data().length;
//列和标题
对于(变量i=0;i0){
contentParts.push(rowParts.join(“,”);
}
//排
for(var rowNum=0;rowNum

问题是,在将要下载的文件中,我需要(手动)添加另一列,一个标题为“Extra”的空列,位于来自datatable的列的末尾(该列将是第四列)。可以使用相同的方法(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");
}
\u mVM.downloadCSV=函数(项目、事件、extraHeader、extraRowData){
var table=$(“#table”+item.Id()).DataTable();
var contentParts=[]、rowParts=[]、visibleColumns=[]、列、数据、字段;
var rows=table.rows({filter:“applicated”});
var rowsData=rows.data();
var columns=table.columns();
var columnsCount=columns.data().length;
//列和标题
对于(变量i=0;i0){
contentParts.push(rowParts.join(“,”);
}
//排
for(var rowNum=0;rowNum
第四列中的值来自何处?它们是随机产生的吗?@PatrickSteadman它们不是来自任何地方。它们不在数据表中,但我需要显示在下载的文件中。假设它是一个额外的硬编码列,一个空列。前三列来自数据表。所以。。。我的datatable中有三列,第四列应该是一个额外的列,标题类似于“extra”,在itNice中有空值!非常感谢!:)
_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");
}