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

时间:2019-02-21 08:06:43

标签: javascript jquery html arrays webpage

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

我需要合并2个数组并将其导出到Excel文件,而我们仅需要使用JavaScript / jquery来实现。假设有两个数组,如下所示:

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

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

因此,当我合并/合并它们时,最终数组看起来像[“ Item 1”,“ Item 2”,“ Item 3”,“ Item 4”]

但是我希望它在导出的文件中显示以下内容:

Expected FOrmat

您能帮我吗?

2 个答案:

答案 0 :(得分: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文件的功能。

答案 1 :(得分:0)

尝试使用它,如果您的数据格式如下所示。我认为CSV是最好的,而不是excel。遵循没有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