使用JavaScript合并2个数组并将其导出到xls文件[关闭]

问题描述 投票:-1回答:3

我知道之前可能已经问过这个问题,但我找不到任何可以帮助我满足要求的答案。

我需要合并2个数组并将它们导出到Excel文件,我们只需要使用JavaScript / jquery来实现这一点。我们假设有2个数组如下:

数组1:[“第1项”,“第2项”]

数组2:[“第3项”,“第4项”]

所以当我合并/连接它们时,Final数组看起来像[“Item 1”,“Item 2”,“Item 3”,“Item 4”]

但我希望它在导出的文件中显示如下:

Expected FOrmat

你能帮我解决这个问题吗?

javascript jquery html arrays webpage
3个回答
1
投票

您可以仅使用concat合并两个数组:

var array1 = ["Item 1", "Item 2"];
var array2 = ["Item 3", "Item 4"];
var merged = array1.concat(array2);

console.log(merged);

导出到XLS有点困难,但幸运的是,它有一个维护良好的库:Excellent Export

还有一篇由tripathy here撰写的优秀文章,该文章具有专门用于制作XLS / XLSX文件的功能。


0
投票

尝试使用此,如果您的数据格式如此。我认为CSV是最好的而不是优秀。遵循第二个解决方案,不依赖JavaScript库。

解决方案1

var array1 = ["Item 1", "Item 3"];
var array2 = ["Item 2", "Item 4"];
let noDuplicate = array1.filter(i => array2.findIndex(a => i == a) == -1);
let result = [...noDuplicate, ...array2];
console.log(result);
exportToExcel = function() {
  var myJsonString = JSON.stringify(result);
  var blob = new Blob([myJsonString], {
    type: "application/vnd.ms-excel;charset=utf-8"
  });
  saveAs(blob, "Report.xls");
};

解决方案2,没有FileSaver.js

var Results = [array1, array2];
exportToCsv = function() {
  var CsvString = "";
  Results.forEach(function(RowItem, RowIndex) {
    RowItem.forEach(function(ColItem, ColIndex) {
      CsvString += ColItem + ",";
    });
    CsvString += "\r\n";
  });
  CsvString = "data:application/csv," + encodeURIComponent(CsvString);
  var x = document.createElement("A");
  x.setAttribute("href", CsvString);
  x.setAttribute("download", "somedata.csv");
  document.body.appendChild(x);
  x.click();
};

您可以在以下JavaScript文件中找到saveAs方法,将此JavaScript文件添加到您的应用程序中。 https://github.com/eligrey/FileSaver.js/blob/master/src/FileSaver.js

DEMO

© www.soinside.com 2019 - 2024. All rights reserved.