CSV Exporter
The IgniteUI CSV Exporter service can export data in a Character Separated Values format from both raw data (array) or from an IgxGrid, IgxHierarchicalGrid and IgxTreeGrid.
The exporting functionality is encapsulated in the IgxCsvExporterService
class.
Angular CSV Exporter Example
To start using the IgniteUI CSV Exporter first import the IgxCsvExporterService
in the app.module.ts file and add the service to the providers
array:
// app.module.ts
...
import { IgxCsvExporterService } from 'igniteui-angular';
// import { IgxCsvExporterService } from '@infragistics/igniteui-angular'; for licensed package
@NgModule({
providers: [ IgxCsvExporterService ]
})
export class AppModule {}
Note
In v12.2.1 and later, the exporter services are provided in root, which means you no longer need to declare them in the AppModule providers.
To initiate an export process you may use the handler of a button in your component's template.
<button (click)="exportButtonHandler()">Export Data to CSV</button>
You may access the exporter service by defining an argument of type IgxCsvExporterService
in the component's constructor and the Angular framework will provide an instance of the service. To export some data in CSV format you need to invoke the exporter service's exportData
method. This method accepts as a first argument the data you want to export and the second argument is of type IgxCsvExporterOptions
and allows you to configure the export process.
Here is the code which will execute the export process in the component's typescript file:
// component.ts
...
import { IgxCsvExporterService, IgxCsvExporterOptions, CsvFileTypes } from 'igniteui-angular';
// import { IgxCsvExporterService, IgxCsvExporterOptions, CsvFileTypes } from '@infragistics/igniteui-angular'; for licensed package
...
public localData = [
{ Name: 'Eric Ridley', Age: '26' },
{ Name: 'Alanis Brook', Age: '22' },
{ Name: 'Jonathan Morris', Age: '23' }
];
constructor(private csvExportService: IgxCsvExporterService) {
}
public exportButtonHandler() {
this.csvExportService.exportData(this.localData, new IgxCsvExporterOptions('ExportedDataFile'), CsvFileTypes.CSV);
}
If all went well, you should see an export button. When pressed, it will trigger the export process and the browser will download a file named "ExportedDataFile.csv" which contains the data from the localData
array in CSV format.
Exporting IgxGrid's Data
The CSV Exporter service can also export data in CSV format from an IgxGrid. The only difference is that you need to invoke the
IgxCsvExporterService
's export
method and pass the IgxGrid as first argument.
Here is an example:
<igx-grid #igxGrid1 [data]="localData" [autoGenerate]="true"></igx-grid>
<button (click)="exportButtonHandler()">Export IgxGrid</button>
// component.ts
...
import { IgxCsvExporterService, IgxCsvExporterOptions, CsvFileTypes, IgxGridComponent } from 'igniteui-angular';
// import { IgxCsvExporterService, IgxCsvExporterOptions, CsvFileTypes, IgxGridComponen } from '@infragistics/igniteui-angular'; for licensed package
...
@ViewChild('igxGrid1') public igxGrid1: IgxGridComponent;
public localData = [
{ Name: 'Eric Ridley', Age: '26' },
{ Name: 'Alanis Brook', Age: '22' },
{ Name: 'Jonathan Morris', Age: '23' }
];
constructor(private csvExportService: IgxCsvExporterService) {
}
public exportButtonHandler() {
this.csvExportService.export(this.igxGrid1, new IgxCsvExporterOptions('ExportedDataFile', CsvFileTypes.CSV));
}
Customizing the Exported Format
The CSV Exporter supports several types of exporting formats. The export format may be specified:
- as a second argument of the
IgxCsvExporterOptions
objects's constructor - using the
IgxCsvExporterOptions
object'sfileType
property
Different export formats have different file extensions and value delimiters. The following table maps the export formats and their respective file extensions and delimiters:
Format | File Extension | Default Delimiter |
---|---|---|
CsvFileTypes.CSV |
.csv | Comma |
CsvFileTypes.TAB |
.tab | Tab |
CsvFileTypes.TSV |
.tsv | Tab |
You can also specify a custom delimiter using the IgxCsvExporterOptions
objects's valueDelimiter
property.
Customizing the Exported Content
In the above examples the CSV Exporter service was exporting all available data. There are situations in which you may want to skip exporting a row or even an entire column. To achieve this you may hook to the columnExporting
and/or rowExporting
events which are fired respectively for each column and/or each row and cancel the respective event by setting the event argument object's cancel
property to true
.
The following example will exclude a column from the export if its name is "Age" and if its index is 1:
// component.ts
this.csvExportService.columnExporting.subscribe((args: IColumnExportingEventArgs) => {
if (args.header == 'Age' && args.columnIndex == 1) {
args.cancel = true;
}
});
this.csvExportService.export(this.igxGrid1, new IgxCsvExporterOptions('ExportedDataFile'));
When you are exporting data from IgxGrid the export process takes in account features like row filtering and column hiding and exports only the data visible in the grid. You can configure the exporter service to include filtered rows or hidden columns by setting properties on the IgxCsvExporterOptions
object. These properties are described in the table below.
API Summary
The CSV Exporter service has a few more APIs to explore, which are listed below.
Additional components that were used: