JSON到.xls:无法匹配格式和扩展名

时间:2014-06-16 10:19:58

标签: javascript json excel xls

我修改了this code以将JSON转换为.xls格式。代码实际上有效,但在MS Excel 2013中打开文件时,会抛出一个警告,指出文件格式和扩展名不匹配。

这是我到目前为止所拥有的:

var json3 = { "d": "[{\"Id\":1,\"UserName\":\"Sam Smith\"},{\"Id\":2,\"UserName\":\"Fred Frankly\"},{\"Id\":3,\"UserName\":\"Zachary Zupers\"}]" }

DownloadJSON2CSV(json3.d);

function DownloadJSON2CSV(objArray)
{
    var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;

    var str = '';

    for (var i = 0; i < array.length; i++) {
        var line = '';

        for (var index in array[i]) {
            line += array[i][index] + '\t';
        }

        line.slice(0,line.Length-1); 

        str += line + '\r\n';
    }
    window.open( "data:application/vnd.ms-excel;charset=utf-8," + escape(str));
}

我错过了什么?

jsFiddle

1 个答案:

答案 0 :(得分:0)

.xls格式是一个复杂得多的(并且就此而言是专有的)文件格式 - 您所做的修改只修改了mime类型,而不是文件的实际内容。换句话说,该文件仍然是一个CSV文件,但你只是欺骗你的浏览器认为它是一个XLS文件。

有关mime类型的更多信息:http://en.wikipedia.org/wiki/Internet_media_type

对于您的问题的解决方案,如果您真的,真的需要XLS,最好的办法是找到一个提供API的在线服务,将CSV转换为XLS(谷歌搜索&#34; CSV到XLS在线&#34;可能帮助)。