UNPKG

@catull/igniteui-angular

Version:

Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps

91 lines 12.4 kB
var IgxExcelExporterService_1; import { __decorate, __metadata } from "tslib"; import * as JSZip from 'jszip/dist/jszip'; import { EventEmitter, Injectable, Output } from '@angular/core'; import { ExcelElementsFactory } from './excel-elements-factory'; import { ExcelFolderTypes } from './excel-enums'; import { IgxBaseExporter } from '../exporter-common/base-export-service'; import { ExportUtilities } from '../exporter-common/export-utilities'; import { WorksheetData } from './worksheet-data'; /** * **Ignite UI for Angular Excel Exporter Service** - * [Documentation](https://www.infragistics.com/products/ignite-ui-angular/angular/components/exporter_excel.html) * * The Ignite UI for Angular Excel Exporter service can export data in Microsoft® Excel® format from both raw data * (array) or from an `IgxGrid`. * * Example: * ```typescript * public localData = [ * { Name: "Eric Ridley", Age: "26" }, * { Name: "Alanis Brook", Age: "22" }, * { Name: "Jonathan Morris", Age: "23" } * ]; * * constructor(private excelExportService: IgxExcelExporterService) { * } * * this.excelExportService.exportData(this.localData, new IgxExcelExporterOptions("FileName")); * ``` */ let IgxExcelExporterService = IgxExcelExporterService_1 = class IgxExcelExporterService extends IgxBaseExporter { constructor() { super(...arguments); /** * This event is emitted when the export process finishes. * ```typescript * this.exporterService.onExportEnded.subscribe((args: IExcelExportEndedEventArgs) => { * // put event handler code here * }); * ``` * @memberof IgxExcelExporterService */ this.onExportEnded = new EventEmitter(); } static populateFolder(folder, zip, worksheetData) { for (const childFolder of folder.childFolders(worksheetData)) { const folderIntance = ExcelElementsFactory.getExcelFolder(childFolder); const zipFolder = zip.folder(folderIntance.folderName); IgxExcelExporterService_1.populateFolder(folderIntance, zipFolder, worksheetData); } for (const childFile of folder.childFiles(worksheetData)) { const fileInstance = ExcelElementsFactory.getExcelFile(childFile); fileInstance.writeElement(zip, worksheetData); } } exportDataImplementation(data, options) { if (this._isTreeGrid) { let maxLevel = 0; data.forEach((r) => { maxLevel = Math.max(maxLevel, r.originalRowData.level); }); if (maxLevel > 7) { throw Error('Can create an outline of up to eight levels!'); } } const worksheetData = new WorksheetData(data, options, this._indexOfLastPinnedColumn, this._sort, this._isTreeGrid); this._xlsx = new JSZip(); const rootFolder = ExcelElementsFactory.getExcelFolder(ExcelFolderTypes.RootExcelFolder); IgxExcelExporterService_1.populateFolder(rootFolder, this._xlsx, worksheetData); this._xlsx.generateAsync(IgxExcelExporterService_1.ZIP_OPTIONS).then((result) => { this.saveFile(result, options.fileName); this.onExportEnded.emit({ xlsx: this._xlsx }); }); } saveFile(data, fileName) { const blob = new Blob([ExportUtilities.stringToArrayBuffer(atob(data))], { type: '' }); ExportUtilities.saveBlobToFile(blob, fileName); } }; IgxExcelExporterService.ZIP_OPTIONS = { compression: 'DEFLATE', type: 'base64' }; __decorate([ Output(), __metadata("design:type", Object) ], IgxExcelExporterService.prototype, "onExportEnded", void 0); IgxExcelExporterService = IgxExcelExporterService_1 = __decorate([ Injectable() ], IgxExcelExporterService); export { IgxExcelExporterService }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZWwtZXhwb3J0ZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9pZ25pdGV1aS1hbmd1bGFyLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2V4Y2VsL2V4Y2VsLWV4cG9ydGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxLQUFLLEtBQUssTUFBTSxrQkFBa0IsQ0FBQztBQUUxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR2pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBT2pEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUVILElBQWEsdUJBQXVCLCtCQUFwQyxNQUFhLHVCQUF3QixTQUFRLGVBQWU7SUFBNUQ7O1FBS0k7Ozs7Ozs7O1dBUUc7UUFFSSxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUE4QixDQUFDO0lBOEMxRSxDQUFDO0lBNUNXLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBb0IsRUFBRSxHQUFVLEVBQUUsYUFBNEI7UUFDeEYsS0FBSyxNQUFNLFdBQVcsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQzFELE1BQU0sYUFBYSxHQUFHLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN2RSxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN2RCx5QkFBdUIsQ0FBQyxjQUFjLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQztTQUNuRjtRQUVELEtBQUssTUFBTSxTQUFTLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUN0RCxNQUFNLFlBQVksR0FBRyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbEUsWUFBWSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUM7U0FDakQ7SUFDTCxDQUFDO0lBRVMsd0JBQXdCLENBQUMsSUFBVyxFQUFFLE9BQWdDO1FBQzVFLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNmLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNELENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxRQUFRLEdBQUcsQ0FBQyxFQUFFO2dCQUNkLE1BQU0sS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7YUFDL0Q7U0FDSjtRQUVELE1BQU0sYUFBYSxHQUFHLElBQUksYUFBYSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BILElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUV6QixNQUFNLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDekYseUJBQXVCLENBQUMsY0FBYyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRTlFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLHlCQUF1QixDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQzFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUV4QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxRQUFRLENBQUMsSUFBWSxFQUFFLFFBQWdCO1FBQzNDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsZUFBZSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDckUsSUFBSSxFQUFFLEVBQUU7U0FDWCxDQUFDLENBQUM7UUFFSCxlQUFlLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNuRCxDQUFDO0NBQ0osQ0FBQTtBQTNEa0IsbUNBQVcsR0FBRyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO0FBYXhFO0lBREMsTUFBTSxFQUFFOzs4REFDNkQ7QUFmN0QsdUJBQXVCO0lBRG5DLFVBQVUsRUFBRTtHQUNBLHVCQUF1QixDQTZEbkM7U0E3RFksdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgSlNaaXAgZnJvbSAnanN6aXAvZGlzdC9qc3ppcCc7XG5cbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFeGNlbEVsZW1lbnRzRmFjdG9yeSB9IGZyb20gJy4vZXhjZWwtZWxlbWVudHMtZmFjdG9yeSc7XG5pbXBvcnQgeyBFeGNlbEZvbGRlclR5cGVzIH0gZnJvbSAnLi9leGNlbC1lbnVtcyc7XG5pbXBvcnQgeyBJZ3hFeGNlbEV4cG9ydGVyT3B0aW9ucyB9IGZyb20gJy4vZXhjZWwtZXhwb3J0ZXItb3B0aW9ucyc7XG5pbXBvcnQgeyBJRXhjZWxGb2xkZXIgfSBmcm9tICcuL2V4Y2VsLWludGVyZmFjZXMnO1xuaW1wb3J0IHsgSWd4QmFzZUV4cG9ydGVyIH0gZnJvbSAnLi4vZXhwb3J0ZXItY29tbW9uL2Jhc2UtZXhwb3J0LXNlcnZpY2UnO1xuaW1wb3J0IHsgRXhwb3J0VXRpbGl0aWVzIH0gZnJvbSAnLi4vZXhwb3J0ZXItY29tbW9uL2V4cG9ydC11dGlsaXRpZXMnO1xuaW1wb3J0IHsgV29ya3NoZWV0RGF0YSB9IGZyb20gJy4vd29ya3NoZWV0LWRhdGEnO1xuaW1wb3J0IHsgSUJhc2VFdmVudEFyZ3MgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBJRXhjZWxFeHBvcnRFbmRlZEV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICB4bHN4OiBKU1ppcDtcbn1cblxuLyoqXG4gKiAqKklnbml0ZSBVSSBmb3IgQW5ndWxhciBFeGNlbCBFeHBvcnRlciBTZXJ2aWNlKiogLVxuICogW0RvY3VtZW50YXRpb25dKGh0dHBzOi8vd3d3LmluZnJhZ2lzdGljcy5jb20vcHJvZHVjdHMvaWduaXRlLXVpLWFuZ3VsYXIvYW5ndWxhci9jb21wb25lbnRzL2V4cG9ydGVyX2V4Y2VsLmh0bWwpXG4gKlxuICogVGhlIElnbml0ZSBVSSBmb3IgQW5ndWxhciBFeGNlbCBFeHBvcnRlciBzZXJ2aWNlIGNhbiBleHBvcnQgZGF0YSBpbiBNaWNyb3NvZnTCriBFeGNlbMKuIGZvcm1hdCBmcm9tIGJvdGggcmF3IGRhdGFcbiAqIChhcnJheSkgb3IgZnJvbSBhbiBgSWd4R3JpZGAuXG4gKlxuICogRXhhbXBsZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHB1YmxpYyBsb2NhbERhdGEgPSBbXG4gKiAgIHsgTmFtZTogXCJFcmljIFJpZGxleVwiLCBBZ2U6IFwiMjZcIiB9LFxuICogICB7IE5hbWU6IFwiQWxhbmlzIEJyb29rXCIsIEFnZTogXCIyMlwiIH0sXG4gKiAgIHsgTmFtZTogXCJKb25hdGhhbiBNb3JyaXNcIiwgQWdlOiBcIjIzXCIgfVxuICogXTtcbiAqXG4gKiBjb25zdHJ1Y3Rvcihwcml2YXRlIGV4Y2VsRXhwb3J0U2VydmljZTogSWd4RXhjZWxFeHBvcnRlclNlcnZpY2UpIHtcbiAqIH1cbiAqXG4gKiB0aGlzLmV4Y2VsRXhwb3J0U2VydmljZS5leHBvcnREYXRhKHRoaXMubG9jYWxEYXRhLCBuZXcgSWd4RXhjZWxFeHBvcnRlck9wdGlvbnMoXCJGaWxlTmFtZVwiKSk7XG4gKiBgYGBcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIElneEV4Y2VsRXhwb3J0ZXJTZXJ2aWNlIGV4dGVuZHMgSWd4QmFzZUV4cG9ydGVyIHtcblxuICAgIHByaXZhdGUgc3RhdGljIFpJUF9PUFRJT05TID0geyBjb21wcmVzc2lvbjogJ0RFRkxBVEUnLCB0eXBlOiAnYmFzZTY0JyB9O1xuICAgIHByaXZhdGUgX3hsc3g6IEpTWmlwO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBldmVudCBpcyBlbWl0dGVkIHdoZW4gdGhlIGV4cG9ydCBwcm9jZXNzIGZpbmlzaGVzLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmV4cG9ydGVyU2VydmljZS5vbkV4cG9ydEVuZGVkLnN1YnNjcmliZSgoYXJnczogSUV4Y2VsRXhwb3J0RW5kZWRFdmVudEFyZ3MpID0+IHtcbiAgICAgKiAvLyBwdXQgZXZlbnQgaGFuZGxlciBjb2RlIGhlcmVcbiAgICAgKiB9KTtcbiAgICAgKiBgYGBcbiAgICAgKiBAbWVtYmVyb2YgSWd4RXhjZWxFeHBvcnRlclNlcnZpY2VcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgb25FeHBvcnRFbmRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SUV4Y2VsRXhwb3J0RW5kZWRFdmVudEFyZ3M+KCk7XG5cbiAgICBwcml2YXRlIHN0YXRpYyBwb3B1bGF0ZUZvbGRlcihmb2xkZXI6IElFeGNlbEZvbGRlciwgemlwOiBKU1ppcCwgd29ya3NoZWV0RGF0YTogV29ya3NoZWV0RGF0YSk6IGFueSB7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGRGb2xkZXIgb2YgZm9sZGVyLmNoaWxkRm9sZGVycyh3b3Jrc2hlZXREYXRhKSkge1xuICAgICAgICAgICAgY29uc3QgZm9sZGVySW50YW5jZSA9IEV4Y2VsRWxlbWVudHNGYWN0b3J5LmdldEV4Y2VsRm9sZGVyKGNoaWxkRm9sZGVyKTtcbiAgICAgICAgICAgIGNvbnN0IHppcEZvbGRlciA9IHppcC5mb2xkZXIoZm9sZGVySW50YW5jZS5mb2xkZXJOYW1lKTtcbiAgICAgICAgICAgIElneEV4Y2VsRXhwb3J0ZXJTZXJ2aWNlLnBvcHVsYXRlRm9sZGVyKGZvbGRlckludGFuY2UsIHppcEZvbGRlciwgd29ya3NoZWV0RGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkRmlsZSBvZiBmb2xkZXIuY2hpbGRGaWxlcyh3b3Jrc2hlZXREYXRhKSkge1xuICAgICAgICAgICAgY29uc3QgZmlsZUluc3RhbmNlID0gRXhjZWxFbGVtZW50c0ZhY3RvcnkuZ2V0RXhjZWxGaWxlKGNoaWxkRmlsZSk7XG4gICAgICAgICAgICBmaWxlSW5zdGFuY2Uud3JpdGVFbGVtZW50KHppcCwgd29ya3NoZWV0RGF0YSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZXhwb3J0RGF0YUltcGxlbWVudGF0aW9uKGRhdGE6IGFueVtdLCBvcHRpb25zOiBJZ3hFeGNlbEV4cG9ydGVyT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5faXNUcmVlR3JpZCkge1xuICAgICAgICAgICAgbGV0IG1heExldmVsID0gMDtcbiAgICAgICAgICAgIGRhdGEuZm9yRWFjaCgocikgPT4ge1xuICAgICAgICAgICAgICAgIG1heExldmVsID0gTWF0aC5tYXgobWF4TGV2ZWwsIHIub3JpZ2luYWxSb3dEYXRhLmxldmVsKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKG1heExldmVsID4gNykge1xuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdDYW4gY3JlYXRlIGFuIG91dGxpbmUgb2YgdXAgdG8gZWlnaHQgbGV2ZWxzIScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgd29ya3NoZWV0RGF0YSA9IG5ldyBXb3Jrc2hlZXREYXRhKGRhdGEsIG9wdGlvbnMsIHRoaXMuX2luZGV4T2ZMYXN0UGlubmVkQ29sdW1uLCB0aGlzLl9zb3J0LCB0aGlzLl9pc1RyZWVHcmlkKTtcbiAgICAgICAgdGhpcy5feGxzeCA9IG5ldyBKU1ppcCgpO1xuXG4gICAgICAgIGNvbnN0IHJvb3RGb2xkZXIgPSBFeGNlbEVsZW1lbnRzRmFjdG9yeS5nZXRFeGNlbEZvbGRlcihFeGNlbEZvbGRlclR5cGVzLlJvb3RFeGNlbEZvbGRlcik7XG4gICAgICAgIElneEV4Y2VsRXhwb3J0ZXJTZXJ2aWNlLnBvcHVsYXRlRm9sZGVyKHJvb3RGb2xkZXIsIHRoaXMuX3hsc3gsIHdvcmtzaGVldERhdGEpO1xuXG4gICAgICAgIHRoaXMuX3hsc3guZ2VuZXJhdGVBc3luYyhJZ3hFeGNlbEV4cG9ydGVyU2VydmljZS5aSVBfT1BUSU9OUykudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNhdmVGaWxlKHJlc3VsdCwgb3B0aW9ucy5maWxlTmFtZSk7XG5cbiAgICAgICAgICAgIHRoaXMub25FeHBvcnRFbmRlZC5lbWl0KHsgeGxzeDogdGhpcy5feGxzeCB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzYXZlRmlsZShkYXRhOiBzdHJpbmcsIGZpbGVOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtFeHBvcnRVdGlsaXRpZXMuc3RyaW5nVG9BcnJheUJ1ZmZlcihhdG9iKGRhdGEpKV0sIHtcbiAgICAgICAgICAgIHR5cGU6ICcnXG4gICAgICAgIH0pO1xuXG4gICAgICAgIEV4cG9ydFV0aWxpdGllcy5zYXZlQmxvYlRvRmlsZShibG9iLCBmaWxlTmFtZSk7XG4gICAgfVxufVxuIl19