如何从jsgrid数据制作一个csv文件

我有一个 jsgrid 表,其中包含来自 mysql 的数据。我想从我过滤的数据中制作一个 csv(或其他东西)。我怎么能做到这一点。


我发现这样的事情:


var csv = $("#grid").jsGrid("exportData", {

    type: "csv", //Only CSV supported

    subset: "all" | "visible", //Visible will only output the currently displayed page

    delimiter: "|", //If using csv, the character to seperate fields

    includeHeaders: true, //Include header row in output

    encapsulate: true, //Surround each field with qoutation marks; needed for some systems

    newline: "\r\n", //Newline character to use


    //Takes each item and returns true if it should be included in output.

    //Executed only on the records within the given subset above.

    filter: function(item){return true},


    //Transformations are a way to modify the display value of the output.

    //Provide a key of the field name, and a function that takes the current value.

    transformations: {

        "Married": function(value){

            if (value === true)

                return "Yes"

            if (value !== false)

                return "No"

        }

    }

});

如何从这个变量制作文件?


万千封印
浏览 182回答 1
1回答

莫回无

您可以将数据保存在数组中,然后使用此函数。function JSONToCSVConvertor(JSONData, Label, ShowLabel) {&nbsp; &nbsp; //If JSONData is not an object then JSON.parse will parse the JSON string in an Object&nbsp; &nbsp; var arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData;&nbsp; &nbsp; var CSV = '';&nbsp; &nbsp; //Set Report title in first row or line&nbsp; &nbsp; CSV += Label + '\r\n\n';&nbsp; &nbsp; //This condition will generate the Label/Header&nbsp; &nbsp; if (ShowLabel) {&nbsp; &nbsp; &nbsp; &nbsp; var row = "";&nbsp; &nbsp; &nbsp; &nbsp; //This loop will extract the label from 1st index of on array&nbsp; &nbsp; &nbsp; &nbsp; for (var index in arrData[0]) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //Now convert each value to string and comma-seprated&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; row += index + ',';&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; row = row.slice(0, -1);&nbsp; &nbsp; &nbsp; &nbsp; //append Label row with line break&nbsp; &nbsp; &nbsp; &nbsp; CSV += row + '\r\n';&nbsp; &nbsp; }&nbsp; &nbsp; //1st loop is to extract each row&nbsp; &nbsp; for (var i = 0; i < arrData.length; i++) {&nbsp; &nbsp; &nbsp; &nbsp; var row = "";&nbsp; &nbsp; &nbsp; &nbsp; //2nd loop will extract each column and convert it in string comma-seprated&nbsp; &nbsp; &nbsp; &nbsp; for (var index in arrData[i]) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; row += '"' + arrData[i][index] + '",';&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; row.slice(0, row.length - 1);&nbsp; &nbsp; &nbsp; &nbsp; //add a line break after each row&nbsp; &nbsp; &nbsp; &nbsp; CSV += row + '\r\n';&nbsp; &nbsp; }&nbsp; &nbsp; if (CSV == '') {&nbsp; &nbsp; &nbsp; &nbsp; alert("Invalid data");&nbsp; &nbsp; &nbsp; &nbsp; return;&nbsp; &nbsp; }&nbsp; &nbsp; //Generate a file name&nbsp; &nbsp; var fileName = "FileTitle";&nbsp; &nbsp; //Initialize file format you want csv or xls&nbsp; &nbsp; var uri = 'data:text/csv;charset=utf-8,' + escape(CSV);&nbsp; &nbsp; //alert(uri);&nbsp; &nbsp; // Now the little tricky part.&nbsp; &nbsp; // you can use either>> window.open(uri);&nbsp; &nbsp; // but this will not work in some browsers&nbsp; &nbsp; // or you will not get the correct file extension&nbsp; &nbsp; //this trick will generate a temp <a /> tag&nbsp; &nbsp; var link = document.createElement("a");&nbsp; &nbsp; link.href = URL.createObjectURL(new Blob([CSV], { type: "application/octet-stream" })); //added to fix network error problem in chrome&nbsp; &nbsp; //set the visibility hidden so it will not effect on your web-layout&nbsp; &nbsp; link.style = "visibility:hidden";&nbsp; &nbsp; link.download = fileName + ".csv";&nbsp; &nbsp; //this part will append the anchor tag and remove it after automatic click&nbsp; &nbsp; document.body.appendChild(link);&nbsp; &nbsp; link.click();&nbsp; &nbsp; // document.body.removeChild(link);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript