Angular导出Excel客户端

我正在使用Angular v4,我想我怎样才能build立一个Excel电子表格从组件中的对象开始。 我需要点击一个button下载Excel文件,我必须做这个客户端。 我有一个由数组组成的json文件,我需要将其转移到excel文件中,可能在样式中进行自定义。 可能吗? 如果是的话,怎么样?

编辑:请没有js库,需要与Typescript和Angular做到这一点

yourdata = jsonData

ConvertToCSV(objArray) { var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray; var str = ''; var row = ""; for (var index in objArray[0]) { //Now convert each value to string and comma-separated row += index + ','; } row = row.slice(0, -1); //append Label row with line break str += row + '\r\n'; for (var i = 0; i < array.length; i++) { var line = ''; for (var index in array[i]) { if (line != '') line += ',' line += array[i][index]; } str += line + '\r\n'; } return str; } 

在你的html:

 <button (click)="download()">export to excel</button> 

在组件中:

 download(){ var csvData = this.ConvertToCSV(yourdata); var a = document.createElement("a"); a.setAttribute('style', 'display:none;'); document.body.appendChild(a); var blob = new Blob([csvData], { type: 'text/csv' }); var url= window.URL.createObjectURL(blob); a.href = url; a.download = 'User_Results.csv';/* your file name*/ a.click(); return 'success'; } 

希望你能帮助你

这是不可能的。

XLS是一种二进制格式。

项目Apache POI( https://en.wikipedia.org/wiki/Apache_POI )名称类为HSSF(可怕的SpreadSheet格式)。

我的build议,使其在服务器端。

你可能不喜欢这个答案根据你的要求; 然而,没有一个JS库,你正在重新发明轮子。 我个人发现Excel XML格式令人难以置信,下面的库(可以从Angular中调用),您可以从已经完成的工作中受益。

有两个部分,你的devise,下载和开放/编辑的内容,Angular也不是只是容器做的工作。

  1. search如何在Angular中下载文件
  2. 一旦下载发生,文件现在是“本地”使用这样的东西打开它

我想你不会在没有js库的情况下做到这一点。 你需要的是打字稿在你的Angular项目中使用它的types。

为了创build一个excel文件,你可以使用像exceljs这样的东西 。 要在您的项目中使用它也安装你可以在这里find的types。 我不确定这个库是否适合…以前没有用过。

下载你应该使用FileSaver.js (我已经使用它)。

 npm install file-saver --save 

…和types:

 npm install @types/file-saver --save-dev 

要使用FileSaver.js,请将以下导入导入到组件中:

 import * as FileSaver from 'file-saver'; 

要触发下载使用:

 FileSaver.saveAs(fileData, "filename.xlsx") 

'fileData'必须是Blob。

希望这有所帮助。