@universis/common
Version:
Universis - common directives and services
29 lines (28 loc) • 4.41 kB
JavaScript
import { Injectable } from '@angular/core';
import * as FileSaver from 'file-saver';
import * as XLSX from 'xlsx';
const EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';
export class ExportSpreadsheetService {
saveAs(buffer, file) {
const data = new Blob([buffer], { type: EXCEL_TYPE });
FileSaver.saveAs(data, file);
}
export(data, file, options) {
const worksheet = XLSX.utils.json_to_sheet(data, {
skipHeader: !!(options && options.skipHeader)
});
if (options.header && !options.skipHeader) {
options.header.forEach((header, index) => {
const cell = worksheet[XLSX.utils.encode_col(index) + '1'];
cell.v = header;
});
}
const workbook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] };
const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });
this.saveAs(excelBuffer, file);
}
}
ExportSpreadsheetService.decorators = [
{ type: Injectable }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LXNwcmVhZHNoZWV0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdW5pdmVyc2lzL2NvbW1vbi8iLCJzb3VyY2VzIjpbInNoYXJlZC9zZXJ2aWNlcy9leHBvcnQtc3ByZWFkc2hlZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sS0FBSyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE1BQU0sVUFBVSxHQUFHLGlGQUFpRixDQUFDO0FBR25HLE1BQU07SUFFSSxNQUFNLENBQUMsTUFBVyxFQUFFLElBQVk7UUFDcEMsTUFBTSxJQUFJLEdBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFDLElBQUksRUFBRSxVQUFVLEVBQUMsQ0FBQyxDQUFDO1FBQzFELFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBVyxFQUFFLElBQVksRUFBRSxPQUduQztRQUNLLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRTtZQUMvQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUM7U0FDOUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTtZQUN6QyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDdkMsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2dCQUMzRCxJQUFJLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztZQUNsQixDQUFDLENBQUMsQ0FBQztTQUNKO1FBQ0QsTUFBTSxRQUFRLEdBQWtCLEVBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDeEYsTUFBTSxXQUFXLEdBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ25GLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7OztZQXhCSixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgRmlsZVNhdmVyIGZyb20gJ2ZpbGUtc2F2ZXInO1xuaW1wb3J0ICogYXMgWExTWCBmcm9tICd4bHN4JztcbmNvbnN0IEVYQ0VMX1RZUEUgPSAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQ7Y2hhcnNldD1VVEYtOCc7XG5cbkBJbmplY3RhYmxlKClcbiAgZXhwb3J0IGNsYXNzIEV4cG9ydFNwcmVhZHNoZWV0U2VydmljZSB7XG5cbiAgICBwcml2YXRlIHNhdmVBcyhidWZmZXI6IGFueSwgZmlsZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRhdGE6IEJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwge3R5cGU6IEVYQ0VMX1RZUEV9KTtcbiAgICAgICAgRmlsZVNhdmVyLnNhdmVBcyhkYXRhLCBmaWxlKTtcbiAgICB9XG5cbiAgICBleHBvcnQoZGF0YTogYW55W10sIGZpbGU6IHN0cmluZywgb3B0aW9ucz86IHtcbiAgICAgIGhlYWRlcj86IHN0cmluZ1tdO1xuICAgICAgc2tpcEhlYWRlcj86IGJvb2xlYW47XG4gIH0pIHtcbiAgICAgICAgY29uc3Qgd29ya3NoZWV0ID0gWExTWC51dGlscy5qc29uX3RvX3NoZWV0KGRhdGEsIHtcbiAgICAgICAgICBza2lwSGVhZGVyOiAhIShvcHRpb25zICYmIG9wdGlvbnMuc2tpcEhlYWRlcilcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChvcHRpb25zLmhlYWRlciAmJiAhb3B0aW9ucy5za2lwSGVhZGVyKSB7XG4gICAgICAgICAgb3B0aW9ucy5oZWFkZXIuZm9yRWFjaCgoaGVhZGVyLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2VsbCA9IHdvcmtzaGVldFtYTFNYLnV0aWxzLmVuY29kZV9jb2woaW5kZXgpICsgJzEnXTtcbiAgICAgICAgICAgIGNlbGwudiA9IGhlYWRlcjtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB3b3JrYm9vazogWExTWC5Xb3JrQm9vayA9IHsgU2hlZXRzOiB7ICdkYXRhJzogd29ya3NoZWV0IH0sIFNoZWV0TmFtZXM6IFsnZGF0YSddIH07XG4gICAgICAgIGNvbnN0IGV4Y2VsQnVmZmVyOiBhbnkgPSBYTFNYLndyaXRlKHdvcmtib29rLCB7IGJvb2tUeXBlOiAneGxzeCcsIHR5cGU6ICdhcnJheScgfSk7XG4gICAgICAgIHRoaXMuc2F2ZUFzKGV4Y2VsQnVmZmVyLCBmaWxlKTtcbiAgICB9XG4gIH1cbiJdfQ==