@catull/igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
91 lines • 12.4 kB
JavaScript
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