2017-02-16 40 views
-1

嗨需要导出文件的xlsx格式,但我确实有嵌套 JSON阵列格式的数据,由于该即时通讯无法获取数据,可以在任何一个 帮我在这,因为我尝试,但没有得到正确的数据如何解析(转换)嵌套的JSON数组数据放入angularjs CSV格式导出的文件XLSX格式

<html ng-app="myApp"> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
    <script src="alasql.min.js"></script> 
    <script src="xlsx.core.min.js"></script> 

    <script src="https://rawgithub.com/eligrey/FileSaver.js/master/FileSaver.js" type="text/javascript"></script> 
<button ng-click="exportData()">Export</button> 
    <div ng-controller="myCtrl"> 
    <html> 

我的剧本是

.fucntion($scope){ 
$scope.inverters = [ 
    { 
    "InvDetails": "UPS", 
    "LstRecords": [ 
     { 
     "Id": 1, 
     "Invertor_Id": 1, 
     "Time_of_Reading": "20170214", 
     "Lastreading": 0, 
     "Readingby": 0 
     }, 
     { 
     "Id": 87, 
     "Invertor_Id": 1, 
     "Time_of_Reading": "20170215", 
     "Lastreading": 5, 
     "Readingby": 10 
     }, 
     { 
     "Id": 110, 
     "Invertor_Id": 1, 
     "Time_of_Reading": "20170216", 
     "Lastreading": 10, 
     "Readingby": 92 
     }, 
     { 
     "Id": 111, 
     "Invertor_Id": 1, 
     "Time_of_Reading": "20170216", 
     "Lastreading": 92, 
     "Readingby": 95 
     } 
    ] 
    }, 
    { 
    "InvDetails": "Power Supply", 

    "LstRecords": [ 
     { 
     "Id": 2, 
     "Invertor_Id": 2, 
     "Time_of_Reading": "20170214", 
     "Lastreading": 0, 
     "Readingby": 0 
     }, 
     { 
     "Id": 88, 
     "Invertor_Id": 2, 
     "Time_of_Reading": "20170215", 
     "Lastreading": 7, 
     "Readingby": 13 
     }, 
     { 
     "Id": 109, 
     "Invertor_Id": 2, 
     "Time_of_Reading": "20170216", 
     "Lastreading": 13, 
     "Readingby": 25 
     }, 
     { 
     "Id": 112, 
     "Invertor_Id": 2, 
     "Time_of_Reading": "20170216", 
     "Lastreading": 25, 
     "Readingby": 49 
     } 
    ] 
    } 
]; 
$scope.exportData = function() { 
     var data=""; 
     $scope.headers=[]; 
     angular.forEach($scope.inverters,function(value,key){ 

     var we=value.InvDetails; 
     $scope.headers.push(we); 
     $scope.last=value.LstRecords; 
     angular.forEach($scope.last,function(value,key){ 

      data={ 
       "Id": value.Id, 
       "Invertor_Id": value.Invertor_Id, 
       "Time_of_Reading":value.Time_of_Reading, 
       "Lastreading": value.Lastreading, 
       "Readingby": value.Readingby 
      }; 
     }) 
    }) 

     $scope.result=[]; 
     $scope.result0=[]; 

     $scope.result.push({ 
      "Invertor1":JSON.stringify(data) 


     }) 

     alasql('SELECT * INTO XLSX("john.xlsx",{headers:true}) FROM ?',[result]); 
    }; 
}; 

可以帮助我如何导出这一个,如果我需要拆分 数据,因为即时通讯从API获取数据,所以如果你分裂和出口这个它 将是有益的形式是任何其他解决方案是否意味着让我知道该怎么做。在此先感谢

+0

Rocker

回答

0

您可以使用搜索操作符:

alasql('SEARCH/AS @r  \ 
     LstRecords/AS @l \ 
     RETURN(@r->InvDetails AS InvDetails, \ 
       @l->Id AS Id,     \ 
       @l->Invertor_Id AS Inventor_Id \ 
     ) \ 
     INTO XLSX("john.xlsx",{headers:true}) FROM ?',[result]); 

这里AlaSQL走到第一阵列,并保存当前记录到@r临时varyable。然后它遍历嵌套的LstRecords数组并将其保存到@l变量。 RETURN子句用所有必要的字段生成结果对象。

+0

但我的数据基础已经在mysql中创建了,我如何在这里使用alasql。你可以让我知道一点,因为即时混淆在那 – Rocker