0

Я не могу найти никого, который установил SheetJS в свое приложение AngularJS с инъекцией зависимости.Как найти способ использования SheetJS в инъекции зависимостей AngularJS 1 неприемлем и возникает ошибка

Я только что нашел парня без инъекции и в качестве плунжера here. Но как импортировать библиотеку в приложение AngularJS 1.x невозможно найти какие-либо документы, связанные с Angular-SheetJS или любым примером на angularJS.

. . .

. Здесь приведена зависимая инъекция с примером «ui.grid». Может ли кто-нибудь помочь мне в этом, чтобы ввести и работать с зависимостями SheetJS? Чрезвычайная просьба

angular.module('upload', [ 'ui.grid', 'ui.grid.resizeColumns', 'ui.grid.pagination', 'ui.grid.selection', 'ui.grid.exporter', 'ui.grid.moveColumns', 'ui.grid.pinning']) .controller('uploadCtrl', [ '$scope', '$state', '$stateParams', 'uiGridConstants', '$localStorage', function ($scope, $state, $stateParams, uiGridConstants, $localStorage) 

ответ

0

Я думаю, что ваш проект конфигурирует ленивую нагрузку и не может загрузить связанные службы. Я предложил функции выделения, которые вам нужны из службы, и напишите все вместе. примерно следующее:

 function Workbook() { 
     if (!(this instanceof Workbook)) return new Workbook(); 
     this.SheetNames = []; 
     this.Sheets = {}; 
    } 

    function sheetFromArrayUiGrid(data, columns) { 
     var ws = {}; 
     var range = { 
      s: { 
       c: 10000000, 
       r: 10000000 
      }, 
      e: { 
       c: 0, 
       r: 0 
      } 
     }; 
     var C = 0; 
     columns.forEach(function (c) { 
      var v = c.displayName || c.value || columns[i].name; 
      addCell(range, v, 0, C, ws); 
      C++; 
     }, this); 
     var R = 1; 
     data.forEach(function (ds) { 
      C = 0; 
      ds.forEach(function (d) { 
       var v = d.value; 
       addCell(range, v, R, C, ws); 
       C++; 
      }); 
      R++; 
     }, this); 
     if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range); 
     return ws; 
    } 

    /** 
    * 
    * @param {*} data 
    * @param {*} columns 
    */ 

    function datenum(v, date1904) { 
     if (date1904) v += 1462; 
     var epoch = Date.parse(v); 
     return (epoch - new Date(Date.UTC(1899, 11, 30)))/(24 * 60 * 60 * 1000); 
    } 

    function s2ab(s) { 
     var buf = new ArrayBuffer(s.length); 
     var view = new Uint8Array(buf); 
     for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; 
     return buf; 
    } 

    function addCell(range, value, row, col, ws) { 
     if (range.s.r > row) range.s.r = row; 
     if (range.s.c > col) range.s.c = col; 
     if (range.e.r < row) range.e.r = row; 
     if (range.e.c < col) range.e.c = col; 
     var cell = { 
      v: value 
     }; 
     if (cell.v == null) cell.v = '-'; 
     var cell_ref = XLSX.utils.encode_cell({ 
      c: col, 
      r: row 
     }); 

     if (typeof cell.v === 'number') cell.t = 'n'; 
     else if (typeof cell.v === 'boolean') cell.t = 'b'; 
     else if (cell.v instanceof Date) { 
      cell.t = 'n'; 
      cell.z = XLSX.SSF._table[14]; 
      cell.v = datenum(cell.v); 
     }else if(cell.v ==='string'){ 
      cell.s=font.bold===true 
     } else cell.t = 's'; 

     ws[cell_ref] = cell; 
    } 

    function getData(grid, rowTypes, colTypes, applyCellFilters) { 
     var data = []; 
     var rows; 
     var columns; 

     switch (rowTypes) { 
      case uiGridExporterConstants.ALL: 
       rows = grid.rows; 
       break; 
      case uiGridExporterConstants.VISIBLE: 
       rows = grid.getVisibleRows(); 
       break; 
      case uiGridExporterConstants.SELECTED: 
       if (grid.api.selection){ 
        rows = grid.api.selection.getSelectedGridRows(); 
       } else { 
        gridUtil.logError('selection feature must be enabled to allow selected rows to be exported'); 
       } 
       break; 
     } 

     if (colTypes === uiGridExporterConstants.ALL){ 
      columns = grid.columns; 
     } else { 
      var leftColumns = grid.renderContainers.left ? grid.renderContainers.left.visibleColumnCache.filter(function(column){ return column.visible; }) : []; 
      var bodyColumns = grid.renderContainers.body ? grid.renderContainers.body.visibleColumnCache.filter(function(column){ return column.visible; }) : []; 
      var rightColumns = grid.renderContainers.right ? grid.renderContainers.right.visibleColumnCache.filter(function(column){ return column.visible; }) : []; 

      columns = leftColumns.concat(bodyColumns,rightColumns); 
     } 

     rows.forEach(function(row, index) { 

      if (row.exporterEnableExporting !== false) { 
       var extractedRow = []; 


       columns.forEach(function(gridCol, index) { 
        if ((gridCol.visible || colTypes === uiGridExporterConstants.ALL) && 
         gridCol.colDef.exporterSuppressExport !== true && 
         grid.options.exporterSuppressColumns.indexOf(gridCol.name) === -1){ 
         var cellValue = applyCellFilters ? grid.getCellDisplayValue(row, gridCol) : grid.getCellValue(row, gridCol); 
         var extractedField = { value: grid.options.exporterFieldCallback(grid, row, gridCol, cellValue) }; 
         if (gridCol.colDef.exporterPdfAlign) { 
          extractedField.alignment = gridCol.colDef.exporterPdfAlign; 
         } 
         extractedRow.push(extractedField); 
        } 
       }); 

       data.push(extractedRow); 
      } 
     }); 

     return data; 
    } 

    function getColumnHeaders(grid, colTypes) { 
     var headers = []; 
     var columns; 

     if (colTypes === uiGridExporterConstants.ALL){ 
      columns = grid.columns; 
     } else { 
      var leftColumns = grid.renderContainers.left ? grid.renderContainers.left.visibleColumnCache.filter(function(column){ return column.visible; }) : []; 
      var bodyColumns = grid.renderContainers.body ? grid.renderContainers.body.visibleColumnCache.filter(function(column){ return column.visible; }) : []; 
      var rightColumns = grid.renderContainers.right ? grid.renderContainers.right.visibleColumnCache.filter(function(column){ return column.visible; }) : []; 

      columns = leftColumns.concat(bodyColumns,rightColumns); 
     } 

     columns.forEach(function(gridCol, index) { 
      if (gridCol.colDef.exporterSuppressExport !== true && 
       grid.options.exporterSuppressColumns.indexOf(gridCol.name) === -1){ 
       // gridCol.colDef.headerCellTemplate = '<a target="_blank" href="http://stackoverflow.com" align="middle" ><img src="http://cdn.flaticon.com/png/256/70689.png" align="middle" title="Describe Image Link Destination" width="70" height="20" /></a>'+'</div>'; 


       headers.push({ 
        name: gridCol.field, 
        displayName: grid.options.exporterHeaderFilter ? (grid.options.exporterHeaderFilterUseName ? grid.options.exporterHeaderFilter(gridCol.name) : grid.options.exporterHeaderFilter(gridCol.displayName)) : gridCol.displayName, 
        width: gridCol.drawnWidth ? gridCol.drawnWidth : gridCol.width, 
        align: gridCol.colDef.type === 'number' ? 'right' : 'left' 
      }); 
      } 
     }); 

     return headers; 
    } 


    // gridCol.colDef.headerCellTemplate = '<a target="_blank" href="http://stackoverflow.com" align="middle" ><img src="http://cdn.flaticon.com/png/256/70689.png" align="middle" title="Describe Image Link Destination" width="70" height="20" /></a>'+'</div>'; 

    function exporting(sheetName, gridApi, rowTypes, colTypes) { 
     var columns = gridApi.grid.options.showHeader ? getColumnHeaders(gridApi.grid, colTypes) : []; 
     var data = getData(gridApi.grid, rowTypes, colTypes); 
     var fileName = gridApi.grid.options.exporterExcelFilename ? gridApi.grid.options.exporterExcelFilename : 'BI_REPORT'; 
     fileName += '.xlsx'; 
     var wb = new Workbook(), 
      ws = sheetFromArrayUiGrid(data, columns); 
     wb.SheetNames.push(sheetName); 
     wb.Sheets[sheetName] = ws; 
     var wbout = XLSX.write(wb, { 
      bookType: 'xlsx', 
      bookSST: false, 
      type: 'binary', 
      cellStyles: true 
     }); 
     wbout. 
      saveAs(new Blob([s2ab(wbout)], { 
      type: 'application/octet-stream' 
     }), fileName); 
    }