angularjs csv下载到本地

时间:2012-10-31 21:37:08

标签: angularjs

当我使用$ http调用服务时,我使服务端返回csv格式如果用户单击按钮则使用Angular ...

So the return is like 1,2,3,4,5,6,7,8,9,10

为用户提供将本地计算机保存的最佳方法是什么?

2 个答案:

答案 0 :(得分:6)

有两个选项

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();
}

答案 1 :(得分:0)

您可以尝试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中的the full example code

在此示例中,Alasql使用SELECT运算符从数据数组中选择所需的字段(AngularJS'创建$$ hashKey字段,用户可能不需要)。如果你不使用 这些数据只需导出到CSV文件:

alasql('SELECT * INTO CSV('mydata.csv') FROM ?',[$scope.data]);