UNPKG

file-saver-angular

Version:

This library is used to export data to csv/excel

132 lines (125 loc) 4.68 kB
import { __decorate } from 'tslib'; import { ɵɵdefineInjectable, Injectable, Component, NgModule } from '@angular/core'; let FileSaverAngularService = class FileSaverAngularService { constructor() { } exportToCsv(rows, filename) { this.csvExport(rows, filename); } csvExport(rows, filename) { if (!rows || !rows.length) { return; } const separator = ','; const keys = Object.keys(rows[0]); const csvContent = keys.join(separator) + '\n' + rows.map(row => { return keys.map(k => { let cell = row[k] === null || row[k] === undefined ? '' : row[k]; cell = cell instanceof Date ? cell.toLocaleString() : cell.toString().replace(/"/g, '""'); if (cell.search(/("|,|\n)/g) >= 0) { cell = `"${cell}"`; } return cell; }).join(separator); }).join('\n'); const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' }); if (navigator.msSaveBlob) { // IE 10+ navigator.msSaveBlob(blob, filename); } else { const link = document.createElement('a'); if (link.download !== undefined) { // Browsers that support HTML5 download attribute const url = URL.createObjectURL(blob); link.setAttribute('href', url); link.setAttribute('download', filename); link.style.visibility = 'hidden'; document.body.appendChild(link); link.click(); document.body.removeChild(link); } } } exportToExcel(rows, filename) { this.csvExport(rows, filename); } excelExport(rows, filename) { if (!rows || !rows.length) { return; } const separator = ','; const keys = Object.keys(rows[0]); const csvContent = keys.join(separator) + '\n' + rows.map(row => { return keys.map(k => { let cell = row[k] === null || row[k] === undefined ? '' : row[k]; cell = cell instanceof Date ? cell.toLocaleString() : cell.toString().replace(/"/g, '""'); if (cell.search(/("|,|\n)/g) >= 0) { cell = `"${cell}"`; } return cell; }).join(separator); }).join('\n'); const blob = new Blob([csvContent], { type: 'application/xls;charset=utf-8;' }); if (navigator.msSaveBlob) { // IE 10+ navigator.msSaveBlob(blob, filename); } else { const link = document.createElement('a'); if (link.download !== undefined) { // Browsers that support HTML5 download attribute const url = URL.createObjectURL(blob); link.setAttribute('href', url); link.setAttribute('download', filename); link.style.visibility = 'hidden'; document.body.appendChild(link); link.click(); document.body.removeChild(link); } } } }; FileSaverAngularService.ɵprov = ɵɵdefineInjectable({ factory: function FileSaverAngularService_Factory() { return new FileSaverAngularService(); }, token: FileSaverAngularService, providedIn: "root" }); FileSaverAngularService = __decorate([ Injectable({ providedIn: 'root' }) ], FileSaverAngularService); let FileSaverAngularComponent = class FileSaverAngularComponent { constructor() { } ngOnInit() { } }; FileSaverAngularComponent = __decorate([ Component({ selector: 'lib-file-saver-angular', template: ` <p> file-saver-angular works! </p> ` }) ], FileSaverAngularComponent); let FileSaverAngularModule = class FileSaverAngularModule { }; FileSaverAngularModule = __decorate([ NgModule({ declarations: [FileSaverAngularComponent], imports: [], exports: [FileSaverAngularComponent] }) ], FileSaverAngularModule); /* * Public API Surface of file-saver-angular */ /** * Generated bundle index. Do not edit. */ export { FileSaverAngularComponent, FileSaverAngularModule, FileSaverAngularService }; //# sourceMappingURL=file-saver-angular.js.map