Как разделить шаблон FooterTemplate в сетке кендо на 2 строки в Excel Excel - Angular 6

У меня есть сетка в угловом проекте 6, нижний колонтитул в сетке содержит 2 типа данных: пользовательская сумма и пользовательское среднее значение, когда я говорю "пользовательский", я имею в виду, что у нас есть собственная логика того, как выполнять вычисления с данными сетки. так выглядит нижний колонтитул

Когда я экспортирую в Excel, нижний колонтитул экспортируется как 1 строка, и я хочу разделить его на 2 строки.

сам экспорт работает нормально, мне просто нужно разделить нижний колонтитул на 2 строки

Код нижнего колонтитула:

  <ng-template kendoGridFooterTemplate let-dataItem let-column let-columnIndex="columnIndex" >
  <div>
    <span *ngIf="columnIndex === 2">{{'average' | translate}}</span>
    <div *ngIf="item.avg">
      <span [ngClass]="getAvg(item.field) > 0 ? 'green' : 'red' ">{{getAvg(item.field) | number: '2.'}}</span>
    </div>
  </div>
  <div>
    <span *ngIf="columnIndex === 2">{{'sum' | translate}}</span>
    <div *ngIf="item.sum">
      <span [ngClass]="getSum(item.field) > 0 ? 'green' : 'red' ">{{getSum(item.field)  | number: '2.'}}</span>
    </div>
</div>
</ng-template>

я уже пытался проверить, могу ли я добавить более 1 нижнего колонтитула, и я не смог найти никакой документации об этом

решение кого-то:)?

1 ответ

Решение

Я нашел решение, в onExcelExport(e: any) я могу получить доступ к ячейкам в листе Excel и отредактировать их, поэтому я просто удалил последнюю строку и вручную вставил нужные мне данные, чтобы код выглядел следующим образом:

настройки сетки: <kendo-grid *ngIf="gridData" [data]="gridData" [pageSize]="state.take" [skip]="state.skip" [sort]="state.sort" [filter]="state.filter" filterable="menu" (filterChange)="filterChange($event)" [navigable]="true" (dataStateChange)="dataStateChange($event)" [sortable]="{ allowUnsort: true, mode:'multiple'} " [selectable]="true" (excelExport)="onExcelExport($event)">

функция выглядит так

  onExcelExport(e: any) {
// delete last row in the excel sheet
   const rows = e.workbook.sheets[0].rows;
   rows.pop();

// push new row by initiate new cell array, looping throw state to get the the right field
   const cellsSum = [];
   const rowsLength = rows[rows.length - 1].cells.length;
   for (let i = 0; i < rowsLength; i++) {
     const field =
       this.employeeColumnService.state.employeeDetailsColumns.find(x => x.title ===   rows[0].cells[i].value.toString()).field;

    cellsSum.push({value: this.getSum(field)});
  }
}
   rows.push({type: "data", cells: cellsSum});
Другие вопросы по тегам