Hello Guys, I’m sharing an example for “Export to CSV in Angular” with source
code. I hope this code sample will helps you to create and download CSV file in
Angular 7+.
Angular7Csv (data, filename, options) – The options
contains the following properties i.e.
1.      ieldSeparator
– It is a field separator character.
2.      quoteStrings
– It is double quotes by default. If provided, will use these characters to
"escape" fields.
3.      decimalseparator
– It is (.) decimal separator by default. If set to "locale", it uses
the language sensitive representation of the number.
4.      showLabels
– It is false by default. If provided, would use this attribute to create a
header row.
5.      showTitle
-  It is false by default.
6.      useBom
- It is true by default. If true, adds a BOM character at the start of the CSV
7.      noDownload
- It is false by default. If true, disables automatic download and returns only
formatted CSV.
Stayed
Informed - Angular7 data-tables Example with sorting, paging and filter
Let’s start the steps.
Steps
1: Installation - Firstly we will need to install the below npm
command in your project.
npm i angular7-csv
Steps
2: Import AngularCsv - Import AngularCsv
in your component file where you want to add your download button to export your
csv file.
import { AngularCsv } from 'angular7-csv/dist/Angular-csv'
Example
in detail: - Components file looks like below code –
import { Component, OnInit } from '@angular/core';
import { AngularCsv } from 'angular7-csv/dist/Angular-csv'
@Component({
  selector: 'app-customer',
  templateUrl: './customer.component.html',
  styleUrls: ['./customer.component.css']
})
export class CustomerComponent implements OnInit {
  constructor() { }
  dtHolidays :any;
  csvOptions = { 
    fieldSeparator: ',',
    quoteStrings: '"',
    decimalseparator: '.',
    showLabels: true, 
    showTitle: true,
    title: 'Your Holiday List :',
    useBom: true,
    noDownload: false,
    headers: ["Holiday ID", "Holiday Date", "Holiday
Comment", "Holiday Status"]
  };
  ngOnInit() {
    //Your data for download in csv file.
    this.dtHolidays =[
      {"id": 101, "Holiday_Date": "21/02/2019", "Holiday_Comment": "company holiday calendar of 2019. ", "Holiday_Status": "Active"},
      {"id": 102, "Holiday_Date": "22/02/2019", "Holiday_Comment": "company holiday calendar of 2019.", "Holiday_Status": "Active"},
      {"id": 103, "Holiday_Date": "23/02/2019", "Holiday_Comment": "company holiday calendar of 2019.", "Holiday_Status": "Pending"},
      {"id": 104, "Holiday_Date": "24/02/2019", "Holiday_Comment": "company holiday calendar of 2019.", "Holiday_Status": "Active"},
      {"id": 105, "Holiday_Date": "25/02/2019", "Holiday_Comment": "company holiday calendar of 2019.", "Holiday_Status": "NotActive"},
      {"id": 106, "Holiday_Date": "26/02/2019", "Holiday_Comment": "company holiday calendar of 2019.", "Holiday_Status": "Active"},
      {"id": 107, "Holiday_Date": "27/02/2019", "Holiday_Comment": "company holiday calendar of 2019.", "Holiday_Status": "Pending"},
      {"id": 108, "Holiday_Date": "28/02/2019", "Holiday_Comment": "company holiday calendar of 2019.", "Holiday_Status": "Active"},
      {"id": 109, "Holiday_Date": "02/03/2019", "Holiday_Comment": "company holiday calendar of 2019.", "Holiday_Status": "NotActive"},
      {"id": 110, "Holiday_Date": "03/04/2019", "Holiday_Comment": "company holiday calendar of 2019.", "Holiday_Status": "Active"},
      {"id": 111, "Holiday_Date": "21/05/2019", "Holiday_Comment": "company holiday calendar of 2019.", "Holiday_Status": "Active"}
    ];  
  }
  downloadCSV(){
    //this.dtHolidays : JSONDATA , HolidayList : CSV file Name,
this.csvOptions : file options
    new  AngularCsv(this.dtHolidays, "HolidayList", this.csvOptions);
  }
}
And 
<button (click)="downloadCSV()" class="btn-default">Download CSV</button>
An option looks like this.
    filename: string;
    fieldSeparator: string; //Defines the field separator character
    quoteStrings: string;//If provided, will use this characters to "escape"
fields, otherwise will use double quotes as deafult
    decimalseparator: string;//Defines the decimal separator character (default is .)
    showLabels: boolean;//If provided, would use this attribute to create a header row
    showTitle: boolean;
    title: string;
    useBom: boolean;//If true, adds a BOM
character at the start of the CSV
    headers: string[];
    noDownload: boolean; //If true, disables
automatic download and returns only formatted CSV
CsvConfigConsts looks like this.
    static EOL: string;
    static BOM: string;
    static DEFAULT_FIELD_SEPARATOR: string;
    static DEFAULT_DECIMAL_SEPARATOR: string;
    static DEFAULT_QUOTE: string;
    static DEFAULT_SHOW_TITLE: boolean;
    static DEFAULT_TITLE: string;
    static DEFAULT_FILENAME: string;
    static DEFAULT_SHOW_LABELS: boolean;
    static DEFAULT_USE_BOM: boolean;
    static DEFAULT_HEADER: any[];
    static DEFAULT_NO_DOWNLOAD: boolean;
AngularCsv class looks like this.
{
    fileName: string;
    labels: Array<String>;
    data: any[];
    private _options;
    private csv;
    constructor(DataJSON: any, filename: string, options?: any);
    /**
     * Generate and Download Csv
     */
    private generateCsv;
    /**
     * Create Headers
     */
    getHeaders(): void;
    /**
     * Create Body
     */
    getBody(): void;
    /**
     * Format Data
     * @param {any} data
     */
    formartData(data: any): any;
    /**
     * Check if is Float
     * @param {any} input
     */
    static isFloat(input: any): boolean;
}
Download source code for - Export to CSV in Angular 7
Stayed
Informed - Angular 7 data-ables Example with sorting, paging and filter
Result Looks like -
