如何将ui-grid导出到excel文件?

时间:2018-03-13 22:03:16

标签: javascript angularjs angular-ui-grid ui-grid

我在我的项目中使用了带有angularjs的ui-grid。

在我的项目中,ui-grid将内容导出到excel文件,并且它的工作正常。

这是ui-grid声明:

和javascript中的ui-grid定义:

 $scope.gridOptions = {
    columnDefs: [
      { field: 'name' },
      { field: 'company', cellFilter: 'mapCompany:this.grid.appScope.companyCatalog' }
    ],
    enableGridMenu: true,
    enableSelectAll: true,
    exporterCsvFilename: 'myFile.csv',
    exporterPdfDefaultStyle: {fontSize: 9},
    exporterPdfTableStyle: {margin: [30, 30, 30, 30]},
    exporterPdfTableHeaderStyle: {fontSize: 10, bold: true, italics: true, color: 'red'},
    exporterPdfHeader: { text: "My Header", style: 'headerStyle' },
    exporterPdfFooter: function ( currentPage, pageCount ) {
      return { text: currentPage.toString() + ' of ' + pageCount.toString(), style: 'footerStyle' };
    },
    exporterPdfCustomFormatter: function ( docDefinition ) {
      docDefinition.styles.headerStyle = { fontSize: 22, bold: true };
      docDefinition.styles.footerStyle = { fontSize: 10, bold: true }; 
      return docDefinition;
    },
    exporterPdfOrientation: 'portrait',
    exporterPdfPageSize: 'LETTER',
    exporterPdfMaxGridWidth: 500,
    exporterCsvLinkElement: angular.element(document.querySelectorAll(".custom-csv-link-location")),

    data : [      
      {
           "name": "Derek",
           "company": 423638
       },
      {
           "name": "Frederik",
           "company": 513560
       }                       
   ],
    onRegisterApi: function(gridApi){
      $scope.gridApi = gridApi;
    },
    gridMenuCustomItems: [
        {
            title:'Custom Export',
            action: function ($event) {
              // this.grid.api.exporter.csvExport( uiGridExporterConstants.ALL, uiGridExporterConstants.ALL, true );

              var exportData = uiGridExporterService.getData(this.grid, uiGridExporterConstants.ALL, uiGridExporterConstants.ALL, true);

              var csvContent = uiGridExporterService.formatAsCsv([], exportData, this.grid.options.exporterCsvColumnSeparator);

              uiGridExporterService.downloadFile (this.grid.options.exporterCsvFilename, csvContent, this.grid.options.exporterOlderExcelCompatibility);        
            },
            order:0
        } 
    ]  
  };

这是workin PLUNKER

但我需要将内容导出到RTL excel文件。

我的问题是如何将ui-grid内容导出到RTL excel文件?

2 个答案:

答案 0 :(得分:7)

这里有两种选择。您可以使用内置菜单,我刚刚在UIGrid的演示中成功完成,或者您可以添加另一个模块,ui.grid.exporter

来自文档:

  

此模块提供从网格导出数据的功能。数据   可以以多种格式导出,以及所有数据,可见数据或   可以导出所选列,包括所有列或可见列。没有   提供UI,调用者应提供自己的UI /按钮   适当的,或启用gridMenu

我使用了内置的gridMenu,它下载了一个没有名为undefined的扩展名的文件。我能够从LibreOffice Calc打开它。 enter image description here enter image description here enter image description here

如果您想要更多控制,具体取决于您的使用案例,请使用导出器功能。导出器功能允许以csv或pdf格式从网格导出数据。导出器可以导出所有数据,可见数据或选定数据。

如果要导出为Excel,则需要安装Excel-Builder模块,可通过以下方式获得:bower install excelbuilder。

你在问题​​中遗漏了很多。用户可以在excel中设置RTL或LTR选项,具体取决于版本。在代码中执行此操作将需要另一个库或程序。多年前,我使用Visual Basic进行了大量的MS Word和Excel编程。

我的观点是,您需要指定excel版本,是否要以编程方式修改文件,是将文件发送到某处还是用户下载它然后用excel打开它?等等......我需要更多关于用例的细节。

答案 1 :(得分:3)

I have changed code in plunker please check this

PLUNKER