file-saver-angular
Version:
This library is used to export data to csv/excel
132 lines (125 loc) • 4.68 kB
JavaScript
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