繁体   English   中英

仅使用Javascript / JQuery将网格数据导出到CSV文件并以扩展名.csv保存

[英]Export grid data to a CSV file and save it with extension .csv by just using Javascript/JQuery

我发现了一些代码可以帮助我生成CSV文件。 但是我无法使用.csv扩展名保存它

我正在使用以下代码生成一个csv文件,但是我需要将文件扩展名为.csv。

var ExportToCSV= function (gridData, fileName, humanize, ignore){

           var csv = '',
           data = [],
        ignore = [];

                                                                         if (!ignore) {
        ignore = [];
    }

    //ignore added datasource properties       
    var commonIgnore = ["_events", "idField", "_defaultId", "constructor", "init", "get",
        "_set", "wrap", "bind", "one", "first", "trigger",
        "unbind", "uid", "dirty", "parent"];
    ignore = $.merge($.merge([], ignore), commonIgnore);

     var data= gridData._data;



    //add the header row
    if (data.length > 0) {
        for (var col in data[0]) {
            //do not include inherited properties
            if (!data[0].hasOwnProperty(col) || ($.inArray(col, ignore) > -1)) {
                continue;
            }

            if (humanize) {
                col = col.split('_').join(' ').replace(/([A-Z])/g, ' $1');
            }

            col = col.replace(/"/g, '""');
            csv += '"' + col + '"';
            if (col != data[0].length - 1) {
                csv += ",";
            }
        }
        csv += "\n";
    }

    //add each row of data
    for (var row in data) {
        for (var col in data[row]) {
            //do not include inherited properties
            if (!data[row].hasOwnProperty(col) || ($.inArray(col, ignore) > -1)) {
                continue;
            }

            var value = data[row][col];
            if (value === null) {
                value = "";
            } else if (value instanceof Date) {
                value = kendo.toString(kendo.parseDate(value),"dd/MM/yyyy");
            } else {
                value = value.toString();
            }

            value = value.replace(/"/g, '""');
            csv += '"' + value + '"';
            if (col != data[row].length - 1) {
                csv += ",";
            }
        }
        csv += "\n";
    }

    //TODO replace with downloadify so we can get proper file naming
    window.open("data:application/csv;charset=utf-8," + escape(csv));

};

有很多方法可以使用服务器端代码(例如php,asp.net,java)来解决此问题。 但是有人可以通过仅使用客户端脚本(即使用Javascript / JQuery)来帮助我达到相同的目的。

非常感谢你的帮助。

请关注有关Chrome(和FF,但尚未测试)的出色博客文章: http : //hackworthy.blogspot.co.nz/2012/05/savedownload-data-generation-in.html

我仍在寻找IE9上的有效方法(ActiveX和execCommand()对我不起作用)。 不得已:Flash,大量插件(Downloadify等)。

由于浏览器是沙盒式的,因此您将无法保存.csv-但是您可以使用api将其发送到服务器,Dropbox或类似文件,然后为用户提供下载文件的链接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM