将javascript数据保存到Excel

将javascript数据保存到Excel,javascript,uri,Javascript,Uri,我有一个web应用程序,需要能够将一些javascript数据(主要是数组)导出到Microsoft Excel。我被告知最好的方法是将我的数据保存为CSV文件。 我知道有很多线程处理类似的问题,但到目前为止,我还没有找到确切的我要找的。。。 我想打电话给一个web服务,并通过客户端完成这项工作 根据一些建议,我尝试使用数据URI将阵列写入磁盘。以下是我在javascript中的代码: function exportToCsv() { var data = [JSONdata.

我有一个web应用程序,需要能够将一些javascript数据(主要是数组)导出到Microsoft Excel。我被告知最好的方法是将我的数据保存为CSV文件。 我知道有很多线程处理类似的问题,但到目前为止,我还没有找到确切的我要找的。。。 我想打电话给一个web服务,并通过客户端完成这项工作

根据一些建议,我尝试使用数据URI将阵列写入磁盘。以下是我在javascript中的代码:

function exportToCsv() {

        var data = [JSONdata.mass, JSONdata.waterMass, JSONdata.bedTemp, JSONdata.evapRate];
        var keys = ["Mass(kg)", "H2O Mass in Bed(kg)", "Bed Temperature(kg)", "Evaporation Rate"];

        var str;
        var orderedData = [];
        for (var i = 0, iLen = data.length; i < iLen; i++) {
            temp = data[i];
            for (var j = 0, jLen = temp.length; j < jLen; j++) {

                if (!orderedData[j]) {
                    orderedData.push([temp[j]]);
                } else {
                    orderedData[j].push(temp[j]);
                }
            }
        }


        str = keys.join(',') + '\r\n' + orderedData.join('\r\n');      



        var uri = 'data:application/csv;charset=UTF-8,' + str;
        window.open(uri);       

}
如果其他人遇到类似的问题,这个解决方案对我来说非常有效,并允许我跳过回到服务器端。谢谢大家的帮助

这似乎是一个很好的线索,并且是您想要的功能的一个相对简单的实现

这对你不起作用有什么原因吗

编辑:

看起来您对HTML5 FileSaver很感兴趣,虽然我不知道它的支持范围有多广,但它似乎满足了您的功能

这:

这是:

这似乎是一个很好的线索,并且是您想要的功能的一个相对简单的实现

这对你不起作用有什么原因吗

编辑:

看起来您对HTML5 FileSaver很感兴趣,虽然我不知道它的支持范围有多广,但它似乎满足了您的功能

这:

这是:

我能够理解并再现您描述的行为。生成URI的代码的问题在于它没有对
str
的内容进行编码

这是我更改的行,注意
str
变量与
encodeURI()
内置函数的包装:

var uri = 'data:application/csv;charset=UTF-8,' + encodeURI(str);
下面是一个生成包含新行的CSV文件的fiddle:。我简化了
for
循环,因为
orderedData
在执行后变为空


请注意,Excel生成的“CSV”文件实际上不使用逗号,而是使用分号。因此,如果要在Excel中使用该文件,请将
替换为
。下面是一个与Excel兼容的文件生成:。

我能够理解并重现您描述的行为。生成URI的代码的问题在于它没有对
str
的内容进行编码

这是我更改的行,注意
str
变量与
encodeURI()
内置函数的包装:

var uri = 'data:application/csv;charset=UTF-8,' + encodeURI(str);
下面是一个生成包含新行的CSV文件的fiddle:。我简化了
for
循环,因为
orderedData
在执行后变为空


请注意,Excel生成的“CSV”文件实际上不使用逗号,而是使用分号。因此,如果要在Excel中使用该文件,请将
替换为
。下面是一个与Excel兼容的文件生成:。

您是否注意到
orderedData
for
循环后显示为空?显然,我下载后得到的文件似乎很好(仅标题)。这里有一个问题。对我来说,文件只有标题,所有数据都放在一个Excel单元格中,而不是正确地分布在表格中……你想用
For
循环实现什么?你注意到
orderedData
For
循环之后变成空的吗?显然,我下载后得到的文件似乎很好(仅标题)。这里有一个。对我来说,文件只有标题,所有数据都放在一个Excel单元格中,而不是正确地分布在整个表中……你想用
For
循环实现什么?我有一个列表,这不是问题所在。我想下载一个带有下载提示的CSV或Excel文件。我有一个列表,这不是问题所在。我想以CSV或Excel文件的形式下载该列表,并提供下载提示。感谢您的耐心等待。我仍然只在表格的一个单元格中获得结果(Excel版本中有两个单元格)。有没有办法让所有数据通过表格单元格正确分布?下载的文件内容是什么样子的?它只是一个头和四个双精度数组。我最终使用FileSaver.js使我的解决方案正常工作。我将在编辑中发布我所做的。谢谢你的耐心。我仍然只在表格的一个单元格中获得结果(Excel版本中有两个单元格)。有没有办法让所有数据通过表格单元格正确分布?下载的文件内容是什么样子的?它只是一个头和四个双精度数组。我最终使用FileSaver.js使我的解决方案正常工作。我将在编辑中发布我所做的。