如果用户单击按钮,当我使用 $http Get with Angular 调用服务时,我让服务端返回 csv 格式。
So the return is like 1,2,3,4,5,6,7,8,9,10
为用户提供将其保存在本地计算机的最佳方式是什么?
如果用户单击按钮,当我使用 $http Get with Angular 调用服务时,我让服务端返回 csv 格式。
So the return is like 1,2,3,4,5,6,7,8,9,10
为用户提供将其保存在本地计算机的最佳方式是什么?
有两种选择
1) 从您的服务器发送 csv。
2) 数据 URI。我想这就是你所要求的。这是一个例子
/**
* @param{string} content The contents of a file to download.
* @param{string} fileName The name to save the file as on the user's computer.
*/
function(content, fileName) {
var dataUrl = 'data:text/csv;utf-9,' + encodeURI(content);
var link = document.createElement('a');
angular.element(link)
.attr('href', dataUrl)
.attr('download', fileName) // Pretty much only works in chrome
link.click();
}
你可以试试Alasql库,它可以将数据以 CSV 格式保存一行:
function myCtrl($scope) {
$scope.filename = "mydata.csv";
$scope.cities = [{city:"Odessa",population:100000},
{city:"Voronezh",population:201022},
{city: "Paris", population: 3000000}];
$scope.saveCSV = function(filename, content) {
alasql('SELECT city, population INTO CSV("'+$scope.filename+'",{headers:true}) FROM ?',
[$scope.cities]);
};
};
请参阅jsFiddle 中的完整示例代码。
在此示例中,Alasql 使用 SELECT 运算符从数据数组中选择所需的字段(AngularJS' 创建 $$hashKey 字段,用户可能不需要该字段)。如果您不使用这些数据,只需导出到 CSV 文件:
alasql('SELECT * INTO CSV('mydata.csv') FROM ?',[$scope.data]);