【问题标题】:How to export angular UI-Grid filtered and full data into excel如何将角度 UI-Grid 过滤和完整数据导出到 excel
【发布时间】:2017-03-21 15:03:22
【问题描述】:

我正在使用UI-Grid 在我的 Angular 应用程序上创建网格视图。 UI-Grid 提供将过滤后的完整网格数据导出为 csv 或 pdf 格式。但是我需要将数据导出到excel中。

我使用早期的 Alasql 来导出网格数据,但是我使用 ng-repeat 来生成网格。

这里 Ui-grid 指令负责生成网格,通过使用 UI-Grid 指令公开的简单方法,我们可以导出数据。只是想知道是否有人尝试将数据导出到 excel 中。

不共享代码,因为我使用的是 UI-Grid 教程提供的相同代码,它对我有用,只是我需要导出到 excel 文件中。

【问题讨论】:

  • 我现在想到的最简单的方法是生成csv格式的内容,并将其下载为带有csv扩展名的blob对象
  • csv 数据应该会自动在 Excel 中打开。我也在使用 UI-Grid,当我导出为 csv 并单击“打开”时,Excel 将打开,数据显示在工作表中。打开下载的 csv 数据时会发生什么?
  • 一般当我们在excel中打开一个csv文件时,所有的数据都在一个列中。除非我们曾经使用 Data> From text 选项将 csv 导入 excel 并提到 ',' 作为分隔符。即使我们对任何 csv 文件执行了一次此操作,excel 也会应用相同的分隔符并在不同的列中生成数据,以便以后我们在 excel 中打开 csv。
  • @neptune:我会试试这个选项。当前,我正在尝试获取所有过滤列和数据的列表,然后尝试将其写为 blob 对象。
  • 对于这样的事情,如果后端是 Java,我通常会使用 Apache POI 之类的东西来调用后端。那里有一个 JS 库,但不再维护它可能会引起人们的兴趣:github.com/stephenliberty/excel-builder.js

标签: javascript angularjs angular-ui-grid


【解决方案1】:

我也在使用 ui-grid 的应用程序中工作,将数据导出到 xlsx 我曾使用过这样的 alasql:

$scope.exportXLS = function exportXLS() {
  alasql.promise('SELECT * INTO XLSX("data.xlsx",{headers:true}) FROM ?',[$scope.gridOptions.data])
 .then(function(data){
     console.log('Data saved as XLSX');
  }).catch(function(err){
     console.log('Error:', err);
  });
};

为了只导出过滤后的数据,我使用 gridApi 得到它,如下所示:

$scope.filteredData =$scope.gridApi.core.getVisibleRows($scope.gridApi.grid);

然后将返回数组中每个对象的实体字段映射到一个新数组 ,我使用下划线库中的 map 函数完成了该操作。

entities = _.map($scope.filteredData, 'entity');

最后将上面函数中的“$scope.gridOptions.data”替换为“entities”。

【讨论】:

  • 获取完整数据导出很好,但是当我在网格上使用 getVisibleRows 方法时,它返回有关过滤行的元数据,而不是这些行的数据
  • 你是对的,对不起我的错。函数 gridApi.core.getVisibleRows 返回一个对象数组,每个对象都包含一个实体字段(即实际行)。为了只从下划线库“entities = _.map($scope.filteredData,'entity');”中获取我使用 map 函数的行。
  • 乐于助人。 (我在堆栈上的第一个答案)
猜你喜欢
  • 2017-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-07
  • 2016-02-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多