首页 > 解决方案 > JSON到excel的转换

问题描述

我正在将 JSON 数据转换为 excel 文件格式。到目前为止,我已经能够使用数据创建一个文件。我期待在第一行添加要显示的自定义消息(下图),然后数据应显示在带有列标题的文件中。

我参考了这个stackblitz 链接

在此处输入图像描述

我怎样才能做到这一点?


新问题

在此处输入图像描述

Missing headers firstName, lastName, email, phone

标签: javascriptjsonangulartypescriptangular-material

解决方案


我假设当您说 JSON 时,您的意思是从 JSON 文件解析的 Javascript 对象。在我的例子中是myObject.

  1. 我们使用创建一个工作表XLSX.utils.json_to_sheet(myObject);
  2. 我们使用以下方法在工作表的开头添加一行:XLSX.utils.sheet_add_aoa(myWorkSheet, [["Your Mesage Goes Here"]], { origin: 0 }); 这会将 aoa(数组数组)插入到由定义的位置的新行中origin
    • { origin: 0 }表示第一行
    • { origin: 1 }表示第二行
    • { origin: -1 }表示最后一行

在我们的例子中,我们只添加了一个单元格 (A1),其内容为:“Your Message Goes Here”

  1. 我们使用合并范围 A1:D1(4 个单元格)中的单元格myWorkSheet['!merges'] = [{ s: 'A1', e: 'D1' }];

    其余的我认为是不言自明的

这是一个工作示例

myObject = [
  { name: "Moran", role: "back" },
  { name: "Alain", role: "front" },
  { name: "Tony", role: "back" },
  { name: "Mike", role: "back" },
  { name: "Abo", role: "back" },
  { name: "Toni", role: "back" }
];

function exportWS() {
  var myFile = "myFile.xlsx";
  var myWorkSheet = XLSX.utils.json_to_sheet(myObject);
  var myWorkBook = XLSX.utils.book_new();
  XLSX.utils.book_append_sheet(myWorkBook, myWorkSheet, "myWorkSheet");
  XLSX.writeFile(myWorkBook, myFile);
}
function exportWSPlus() {
  var myFile = "myFilePlus.xlsx";
  var myWorkSheet = XLSX.utils.json_to_sheet(myObject);
  XLSX.utils.sheet_add_aoa(myWorkSheet, [["Your Mesage Goes Here"]], { origin: 0 });
  var merges = myWorkSheet['!merges'] = [{ s: 'A1', e: 'D1' }];
  var myWorkBook = XLSX.utils.book_new();
  XLSX.utils.book_append_sheet(myWorkBook, myWorkSheet, "myWorkSheet");
  XLSX.writeFile(myWorkBook, myFile);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.14.3/xlsx.full.min.js"></script>
<button type="button" onclick="exportWS()">Export Worksheet</button>
<button type="button" onclick="exportWSPlus()">Export Worksheet+</button>

随时问您可能有的任何问题。


推荐阅读