使用 alasql 在导出 excel sheet 时映射键值对
map key value pairs while export excel sheet using alasql
我正在使用 'alasql'.
导出到 excel sheet 要求
我的 Javasript object 作为 alasql 的输入是
0:
ContactEmail: "email1@example.com"
ContactName: "abcd"
CustomerName: "defg"
SubdomainName: "adasdasd"
1:
ContactEmail: "email2@example.com"
ContactName: "abcd"
CustomerName: "defg"
SubdomainName: "adasdasd"
2:
ContactEmail: "email3@example.com"
ContactName: "abcd"
CustomerName: "defg"
SubdomainName: "adasdasd"
下面是我要导出到 excel sheet
的 alasql 脚本
var sheet_name = 'clients.xlsx'
alasql('SELECT * INTO XLSX("'+sheet_name+'",{headers:true}) FROM ?', arrayToExport);
我的问题是, 它仅导出第一个键,即“0”和“1”键值和 headers,如下所示:
0 1
CustomerName name1
ContactName contact1
ContactEmail email1@example.com
SubdomainName adasdasd
JS 包括:
<script src="{{ asset(auto_version('public/js/alasql.min.js')) }}"></script>
<script src="{{ asset(auto_version('public/js/alasql_xlsx.js')) }}"></script>
谁能帮我解决这个问题。谢谢。
我已经解决了这个问题。我希望这可能对其他人有所帮助。我已经修复了它,因为我尝试直接给出一个 javascript 对象,这不是正确的方法,所以我已经将 javascript 对象转换为数组,然后是对象,数组也应该在一个key:value 对每个数组对象迭代。我想你可能会有点困惑,但看完之后你就会明白了。我的数组对象如下所示:
arrayToExport:
[Array(11)]
0: Array(11)
0: {CustomerName: "CName1", ContactName: "contact1", ContactEmail: "email1@example.com", SubdomainName: "domain1", Region: "USA", …}
1: {CustomerName: "CName2", ContactName: "contact2", ContactEmail: "email2@example.com", SubdomainName: "domain2", Region: "USA", …}
2: {CustomerName: "CName3", ContactName: "contact3", ContactEmail: "email3@example.com", SubdomainName: "domain3", Region: "USA", …}
3: {CustomerName: "CName4", ContactName: "contact4", ContactEmail: "email4@example.com", SubdomainName: "domain4", Region: "USA", …}
4: {CustomerName: "Sudhakar", ContactName: "contact5", ContactEmail: "email5@example.com", SubdomainName: "domain5", Region: "USA", …}
5: { …}
我的Javascript:
$scope.doExport = function(list){
var sheet_name = 'clients.xlsx'
var arrayToExport = {};
var arrData = [];
$scope.list = list;
var i = 0;
angular.forEach($scope.list, function(value, key){
var status = (value.status == 0) ? 'Pending' : 'Active';
var region = value.region;
region = region.toUpperCase();
var initial = value.subscr_end_date.split(/\-/);
var finalDate = [ initial[1], initial[2], initial[0] ].join('/');
//console.log( finalDate );
arrData[i] = {CustomerName:value.client_info.first_name,ContactName:value.client_info.last_name, ContactEmail:value.client_info.email,SubdomainName:value.sub_domain_name,Region:region,Status:status,SubscriptionEndDate:finalDate
};
i++;
});
arrayToExport = [arrData];
console.log(arrayToExport);
alasql('SELECT * INTO XLSX("'+sheet_name+'",{headers:true}) FROM ?', arrayToExport);
}
我正在使用 'alasql'.
导出到 excel sheet 要求我的 Javasript object 作为 alasql 的输入是
0:
ContactEmail: "email1@example.com"
ContactName: "abcd"
CustomerName: "defg"
SubdomainName: "adasdasd"
1:
ContactEmail: "email2@example.com"
ContactName: "abcd"
CustomerName: "defg"
SubdomainName: "adasdasd"
2:
ContactEmail: "email3@example.com"
ContactName: "abcd"
CustomerName: "defg"
SubdomainName: "adasdasd"
下面是我要导出到 excel sheet
的 alasql 脚本var sheet_name = 'clients.xlsx'
alasql('SELECT * INTO XLSX("'+sheet_name+'",{headers:true}) FROM ?', arrayToExport);
我的问题是, 它仅导出第一个键,即“0”和“1”键值和 headers,如下所示:
0 1
CustomerName name1
ContactName contact1
ContactEmail email1@example.com
SubdomainName adasdasd
JS 包括:
<script src="{{ asset(auto_version('public/js/alasql.min.js')) }}"></script>
<script src="{{ asset(auto_version('public/js/alasql_xlsx.js')) }}"></script>
谁能帮我解决这个问题。谢谢。
我已经解决了这个问题。我希望这可能对其他人有所帮助。我已经修复了它,因为我尝试直接给出一个 javascript 对象,这不是正确的方法,所以我已经将 javascript 对象转换为数组,然后是对象,数组也应该在一个key:value 对每个数组对象迭代。我想你可能会有点困惑,但看完之后你就会明白了。我的数组对象如下所示:
arrayToExport:
[Array(11)]
0: Array(11)
0: {CustomerName: "CName1", ContactName: "contact1", ContactEmail: "email1@example.com", SubdomainName: "domain1", Region: "USA", …}
1: {CustomerName: "CName2", ContactName: "contact2", ContactEmail: "email2@example.com", SubdomainName: "domain2", Region: "USA", …}
2: {CustomerName: "CName3", ContactName: "contact3", ContactEmail: "email3@example.com", SubdomainName: "domain3", Region: "USA", …}
3: {CustomerName: "CName4", ContactName: "contact4", ContactEmail: "email4@example.com", SubdomainName: "domain4", Region: "USA", …}
4: {CustomerName: "Sudhakar", ContactName: "contact5", ContactEmail: "email5@example.com", SubdomainName: "domain5", Region: "USA", …}
5: { …}
我的Javascript:
$scope.doExport = function(list){
var sheet_name = 'clients.xlsx'
var arrayToExport = {};
var arrData = [];
$scope.list = list;
var i = 0;
angular.forEach($scope.list, function(value, key){
var status = (value.status == 0) ? 'Pending' : 'Active';
var region = value.region;
region = region.toUpperCase();
var initial = value.subscr_end_date.split(/\-/);
var finalDate = [ initial[1], initial[2], initial[0] ].join('/');
//console.log( finalDate );
arrData[i] = {CustomerName:value.client_info.first_name,ContactName:value.client_info.last_name, ContactEmail:value.client_info.email,SubdomainName:value.sub_domain_name,Region:region,Status:status,SubscriptionEndDate:finalDate
};
i++;
});
arrayToExport = [arrData];
console.log(arrayToExport);
alasql('SELECT * INTO XLSX("'+sheet_name+'",{headers:true}) FROM ?', arrayToExport);
}