Angular - How to apply custom Pipe values in Excel File Download Display

Viewed 19

In my Angular-14, I have a file to upload to Excel from DB.

isApproved is either 0 or 1, so I have toTruePipe for it.

Also projectStatus is any of 0 or 1 or 2, so I have projectStatusPipe for it.

ProjectStatus Pipe:

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'projectStatus'
})
export class ProjectStatusPipe implements PipeTransform {

  transform(value: number): string {
    if (value == 0) {
        return 'Pending';
    }
    if (value == 1) {
      return 'Failed';
    }
    if (value == 2) {
      return 'Processed';
    }
    return 'Processed';
  }
}

ToTrue Pipe:

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'toTrue'
})
export class ToTruePipe implements PipeTransform {
  transform(value: any): string {
    switch (value) {
      case true:
      case 'true':
      case 1:
      case '1':
        return "True";
      default:
        return "False";
    }
  }
}

Then I have this typescript for the excel download.

component.ts:

import { DatePipe, CurrencyPipe } from '@angular/common';
import { Router, ActivatedRoute } from '@angular/router';
import { ToTruePipe } from 'src/app/shared/pipes/to-true.pipe';
import { ProjectStatusPipe } from 'src/app/shared/pipes/project-status-pipe.pipe';

  constructor(
    private projectService: ProjectService,
    private excelService: ExcelExportService,
    private datePipe: DatePipe,
    private currencyPipe: CurrencyPipe,
    private toTruePipe: ToTruePipe,
    private projectStatusPipe: ProjectStatusPipe
    
  ) {
  }


  exportExcel() {
    const newProjectList = this.allProjectList.map((e) => {
      return {
        referenceNumber: e.referenceNumber,
        startDate: this.datePipe.transform(e.startDate, 'dd-MMM-yyyy'),
        endDate: this.datePipe.transform(e.mandate.endDate, 'dd-MMM-yyyy'),
        amount: this.currencyPipe.transform(e.amount, ' N'),
        isApproved: e.isApproved,
        projectStatus: e.projectStatus
      };
    });
    this.excelService.exportAsExcelFile(
      'Projectss List Report',
      'Printed Date : ' + this.datePipe.transform(new Date(), 'medium'),
      '',
      this.excelHeaderColumns,
      newProjectList,
      'projects-list-report',
      'Sheet1'
    );
  }

The project is that in the Excel, isApproved appeared as 0 or 1, while the projectStatus appeared as 0 or 1 or 2.

How do I apply the custom pipes (toTruePipe for isApproved and projectStatusPipe for projectStatus) to them as in datePipe and currencyPipe?

Thanks

0 Answers
Related