2017-02-22 6 views
1

Привет им новое для angularjs мне нужно изучить данные в XLSX формате, но им иметь мои данные в вложенном формате JSON массива, который не является возможно, для изучить данные в формате xlsx.Как разобрать вложенные данные JSON данные, чтобы изучить файл в формате XSLX в angularjs

index.html

<script src="https://rawgithub.com/eligrey/FileSaver.js/master/FileSaver.js" type="text/javascript"></script> 
     <script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.7.12/xlsx.core.min.js"></script> 
     <script src="https://cdn.jsdelivr.net/alasql/0.3/alasql.min.js"></script> 
    <div class="box-body"> 
    <button ng-click="exportData()" class="btn btn-primary" style="float:right;margin-right:30px; margin-bottom:30px;">Export&nbsp;&nbsp;<i class="fa fa-arrow-do 
wn"></i></button> 
</div> 

export.js

dashboard.controller('excelreportController',function($scope,$html){ 
$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({ 
      "Invertor": JSON.stringify(data) 
     }) 
     alasql('SELECT * INTO XLSX("john.xlsx",{headers:true}) FROM ?', [$scope.result]); 
    }; 

пожалуйста, дайте мне знать, какой-либо, как экспортировать эти данные в XLSX формата с использованием angularjs я перепробовал все способы от более 24 hrs, но я не получил, как это сделать, пожалуйста, используйте мои данные json, которые я даю, присылайте мне рабочую скрипку, которая поможет мне в angularjs, просто мне нужно экспортировать свои данные в формате xlsx.

+0

Взгляните это: http://stackoverflow.com/questions/30914247/json-to-xls-in-javascript. Json2xls отлично работает :) –

+0

Я тоже пробовал это, но в листе я не получал никаких данных. Пустой лист приближается. – Rocker

ответ

0

Вы можете легко скомпоновать свой комплекс json следующим образом.

var data = [ 
    { 
     "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 
      } 
     ] 
    } 
    ]; 

, а затем создать прототип метода массива, как

Array.prototype.concatAll = function() { 
    var results = []; 
    this.forEach(function(subArray){ 
     subArray.forEach(function(item) { 
      results.push(item); 
     }); 
    }) 
    return results; 
}; 

и после этого вы можете просто функциональна карта использовать массив, чтобы сгладить свой сложный JSON в простой

var newData = 
     data. 
     map(function(invertor){ 
      return invertor.LstRecords; 
     }). 
     concatAll(); 
console.log(newData) 
+0

данные не задаются. – Rocker

+0

. Я назначаю ваш комплекс json для данных. –

+0

. Я присвоил то же самое, что и у, но все же это показывая – Rocker