如何将多个农业网格导出到单个Excel,并将每个农业网格数据作为AngularJS中Excel中的不同工作表

问题描述 投票:0回答:1

我必须将 2 个 ag 网格导出到一个 Excel 工作表中。每个 ag 网格数据对应于 Excel 中的工作表

我尝试了这种方式,但是 getsheetdataforexcel 在 angularjs 中不可用,或者我必须为此安装一些东西?我在 1 个屏幕中有 2 个 AG 网格。美国期权和印度期权。我正在使用旧的 AngularJS。看来我在 angularJS ag 网格中没有 getSheetDataForExcel 。我收到错误 getSheetDataForExcel 不是函数。有办法吗?

 vm.exportData = function (exportType) {
    

    var spreadsheets = [
      vm.USAOptions.api.getSheetDataForExcel({
        sheetName: "USA",
      }),
      vm.IndiaOptions.api.getSheetDataForExcel({
        sheetName: "INDIA",
      })
    ];

    vm.USAOptions.api.exportMultipleSheetsAsExcel({
      data: spreadsheets,
      fileName: 'Countries.xlsx'
    });
  }
javascript angularjs ag-grid
1个回答
0
投票

您可以使用

getRowNodeId
getDisplayedRowCount
手动为每个工作表创建数据,然后使用
exportDataAsExcel
导出到 Excel。

尽管如此,了解您正在使用哪个版本的图表/网格会有所帮助。
例如,在 Grid v27.1.0/Charts 5.10 之后,

gridOptions.immutableData 
gridOptions.getRowNodeId()
已被弃用。相反,实现
getRowId()
,然后网格也会自动将数据视为不可变数据。

不过,该方法提供了对导出哪些行的更多控制,如果您需要在导出之前对每个网格进行不同的操作或格式化数据,则该方法会很有用。

vm.exportData = function () {
  // Function to manually extract data from a grid
  function extractGridData(gridOptions) {
    var rowData = [];
    var rowCount = gridOptions.api.getDisplayedRowCount();
    for (var i = 0; i < rowCount; i++) {
      var rowNode = gridOptions.api.getDisplayedRowAtIndex(i);
      rowData.push(rowNode.data);
    }
    return rowData;
  }

  // Extracting data from both grids
  var USAData = extractGridData(vm.USAOptions);
  var IndiaData = extractGridData(vm.IndiaOptions);

  // Preparing data for export
  var exportData = [
    {
      name: "USA",
      data: USAData
    },
    {
      name: "INDIA",
      data: IndiaData
    }
  ];

  // Exporting to Excel
  vm.USAOptions.api.exportDataAsExcel({
    data: exportData,
    fileName: 'Countries.xlsx'
  });
};

extractGridData
函数迭代网格的每一行并构造一个行数据数组。
USAData
IndiaData
保存来自各自网格的数据。
exportDataAsExcel
使用包含每张纸数据的数组进行调用。

© www.soinside.com 2019 - 2024. All rights reserved.