如何在AngularJS中将JSON导出或转换成Excel?

我用4个对象提取一个数组,每个对象都有一个数组,里面是我的Angular项目中的kendo图表数据源。

每个子对象内部的数据大小不一,但始终包含时间戳和1-5个值字段。

我需要将此数组导出到Excel文件(.xls或.xlsx NOT CSV)。

到目前为止,我设法下载JSON作为文件(包括.json和unformatted .xls)。

我希望每个对象成为一本书,并在该书中有一个格式,其中第一列的时间戳,另一个值为1,依此类推。 列标题应该是时间戳,value1名称等(我正在翻译这些在用户界面上根据用户的喜好)。

我怎样才能build立这种格式的.xls文件使用angular? 我不知道一个特别好的图书馆,这是很清楚如何在Angular中使用它。

在Nathan Beck的链接消解之后,我使用了AlaSQL。 我得到正确格式的列,只需要适应我的数组有多个工作表。

我们将alaSQL集成到我们的Angular项目的方式是包含alasql.min.js和xlsx.core.min.js.

然后我们在函数中调用alasql方法

$scope.export = function(){ var arrayToExport = [{id:1, name:"gas"},...]; alasql('SELECT * INTO XLSX("your_filename.xlsx",{headers:true}) FROM ?', arrayToExport); } 

编辑:解决了多个工作表问题。 请记住,使用多个工作表方法时,必须删除星号,并用问号replace查询中的标题:true对象,并将选项传递到单独的数组中。 所以:

 var arrayToExport1 = [{id:1, name:"gas"},...]; var arrayToExport2 = [{id:1, name:"solid"},...]; var arrayToExport3 = [{id:1, name:"liquid"},...]; var finalArray = arrayToExport1.concat(arrayToExport2, arrayToExport3); var opts = [{sheetid: "gas", headers: true},{sheetid: "solid", headers: true},{sheetid: "liquid", headers: true}]; alasql('SELECT INTO XLSX("your_filename.xlsx",?) FROM ?', [opts, finalArray]);