2015-12-09 118 views
1

我想一個HTML表導出到Excel表格中,我使用alasql:AngularJS - 嘗試將數據導出到Excel

$scope.Excelexport =function(){ 
    alasql('SELECT * INTO XLSX("example.xlsx",{headers:true}) FROM ?',[$scope.college.data]); 
} 

,因爲我的數據看起來這並沒有爲我工作

$scope.college.data = [ 
    {{[{faculty: 20k, Student:5k}], name:MIT}}, 
    {{[{faculty: 20k, Student:5k}], name:Stevens}}, 
    {{[{faculty: 20k, Student:5k}], name:RIT}}, 
    {{[{faculty: 20k, Student:5k}], name:IIT}}, 
] 

當我使用導出時,我得到了[object,object]。我知道原因是因爲我的數組是對象的對象。我如何讓some[]顯示在excel中作爲標題的名稱?

在Excel中,我希望數據看起來像

Faculty | Student 
    ---------------------- 
    MIT 
    ---------------------- 
    20k  | 500k 
+0

您使用什麼庫將數據導出到csv或excel?另外,你可以舉一個'some []'的例子嗎?像這樣導出數據不是問題,它僅取決於您希望數據在csv文件中的樣子。所以,就你而言,你需要做一些數據修改,然後導出爲ex​​cel或csv文件。 –

+0

@邵浩林我正在使用alasql庫...我編輯了問題再看看數據。 – user3100209

+0

我可以做'Name |教師|學生'到'MIT | 20K | 50K'。如果你想學習如何做到這一點,讓我知道,我會發布解決方案。 –

回答

1

假設數據是您在評論會話中提供的鏈接。以下功能將[object object]轉換爲對象數組,允許導出爲CSV文件。

//initialize an empty array ready for export as csv 
$scope.exportCsvFile = []; 

//$scope.data is the valid json data you provided on the comment session 
//you just assign the json data to $scope.data 
angular.forEach($scope.data, function(collegeData){ 
    var labbox = collegeData.data.labbox; 
    angular.forEach(collegeData.data.timeseriesdata, function(singleData){ 
    var temp = { 
     name: labbox 
    }; 
    angular.forEach(singleData, function(value, key){ 
     temp[key] = value; 
    }); 
    $scope.exportCsvFile.push(temp); 
    }); 
}); 

功能後,您$scope.exportCsvFile陣列會看起來像:

[ 
{name: 'Stevens', faculty: 1, student, 949, from: "17:30", to: "17:42"}, 
{name: 'Stevens', faculty: 0.99, student, 949, from: "17:42", to: "17:54"}, 
{name: 'Stevens', faculty: 0.97, student, 1380, from: "17:54", to: "17:42"}, 
{...} 
] 

在此之後,您可以導出文件:

$scope.Excelexport = function() { 
alasql('SELECT * INTO XLSX("example.xlsx",{headers:true}) FROM ?',[$scope.exportCsvFile]); 
} 

CSV文件應該像如下:

Name | Faculty | Student | From | To 
    --------------------------------------------------------- 
    Stevens|  1  |  949  | 17:30 | 17:42 
    --------------------------------------------------------- 
    Stevens| 0.99  |  1090 | 17:42 | 17:54 
    --------------------------------------------------------- 

如果這仍然無法解決您的問題,那麼可以看看名爲ng-Csv的AngularJS指令。它在字體結尾側將數據導出爲csv文件。希望能幫助到你!!

0

有一個在你的問題JSON數據的問題,但如果你把它修改成類似:

$scope.college.data = [ 
    {data:[{faculty: '20k', Student:'5k'}], name: 'MIT' }}, 
    {data:[{faculty: '20k', Student:'5k'}], name: 'Stevens' }}, 
]; 

你可以試試這個SQL語句:

alasql('SELECT data->0->faculty,data->0->faculty,\ 
    name INTO XLSX("example.xlsx",{headers:true}) FROM ?',[$scope.college.data]) 

在這裏,您可以使用->箭頭作爲JavaScript中的點:

[{data:[10]}]   -- SELECT data->0  gives 10 
[{data:{other:20}}]  -- SELECT data->other gives 20