我正在尝试将HTML表格导出到excel表格中,而我正在使用alasql:
$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 :(得分: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文件。希望它有所帮助!!
答案 1 :(得分:0)
您的问题中的JSON数据存在问题,但如果您将其修改为:
var c = Database.Set<Photo>().
Where(p => string.IsNullOrEmpty(userId) || p.ClientProfileId == userId).
OrderBy(p => orderBy == OrderBy.TimeOfCreation ? p.TimeOfCreation : DateTime.Now).
ThenBy(p => orderBy == OrderBy.AverageRaiting ? p.AverageRaiting : 0.0).
Skip((page - 1) * pageSize).Take(pageSize);
return c
您可以尝试以下SQL语句:
$scope.college.data = [
{data:[{faculty: '20k', Student:'5k'}], name: 'MIT' }},
{data:[{faculty: '20k', Student:'5k'}], name: 'Stevens' }},
];
在这里,您可以使用alasql('SELECT data->0->faculty,data->0->faculty,\
name INTO XLSX("example.xlsx",{headers:true}) FROM ?',[$scope.college.data])
箭头作为JavaScript中的点:
->