在JavaScript中将对象数组导出为Excel文件

3

我有一些存储在 JavaScript 数组中的数据:

var video= [ ["name1",1,2,3], ["name2",4,54,44], ["name3",212,212,1213], ["name4",32,133,33] ];

我怎样能将这些数据保存在CSV文件中?
3个回答

2
检查一下这个:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Demo</title>>

    <script>
        var data = [
        ["name1", 1, 2, 3],
        ["name2", 4, 54, 44],
        ["name3", 212, 212, 1213],
        ["name4", 32, 133, 33]
        ];


        function generateCSV() {
            var csv = 'Name, Value1, Value2, Value3\n';
            data.forEach(function(row) {
                csv += row.join(',');
                csv += "\n";
            });

            var hiddenElement = document.createElement('a');
            hiddenElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(csv);
            hiddenElement.target = '_blank';
            hiddenElement.download = 'data.csv';
            hiddenElement.click();
        }
    </script>
</head>
<body>
    <button onclick="generateCSV()">Download</button> 
</body>
</html>

在这里,我们正在创建CSV(逗号分隔值)文件。 MS-Excel可以轻松打开CSV文件。稍后,您可以通过MS-Excel或任何其他电子表格程序(如OpenOffice Calc)轻松将这些CSV文件转换为XLS或XSLX文件。


如果我有这样的数组, vod=[{name:"name","num1":1,"num2":2},{name:"name","num1":1,"num2":2},{name:"name","num1":1,"num2":2}], 我能否使用相同的方法,数组中包含JSON对象? - user13929082

1

你好,我认为从JSON导出是最简单的方法。

你可以写一些类似这样的内容:

import exportFromJSON from 'export-from-json'
 
var video = [ ["name1",1,2,3], ["name2",4,54,44], ["name3",212,212,1213], ["name4",32,133,33] ];
const fileName = 'download'
const exportType = 'csv'   //exported type could be text, json, csv, xls, xml
 
exportFromJSON({ video, fileName, exportType })

是一个Codepen例子。

以xls格式导出您的数据如下:

enter image description here


0

最简单的方法可能是创建一个CSV文件,以便导入Excel。类似这样的东西可能会起作用:

const video= [ ["name1",1,2,3], ["name2",4,54,44], ["name3",212,212,1213], ["name4",32,133,33] ];
const toCsv = arr => arr.map(row => row.join(",")).join("\n");
console.log(toCsv(video));

通常,使用库来生成这样的CSV文件或实际的Excel文件(xlsx或xls)更安全。这种方式可以为您处理引号和字符转义等问题。例如,可以参考Giovanni Esposito的回答中描述的https://www.npmjs.com/package/export-from-json
对于复制并粘贴到Excel中,TSV(制表符分隔值)通常效果很好。可以使用以下类似内容:

const video= [ ["name1",1,2,3], ["name2",4,54,44], ["name3",212,212,1213], ["name4",32,133,33] ];
const toTsv = arr => arr.map(row => row.join("\t")).join("\r\n");
console.log(toTsv(video));


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接