UNPKG

@lxlib/seed

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.1.1.

331 lines (322 loc) 9.57 kB
import { Injectable, ɵɵdefineInjectable, ɵɵinject, Directive, Input, NgModule } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { LazyService, LxlibUtilModule } from '@lxlib/util'; import { saveAs } from 'file-saver'; import { CommonModule } from '@angular/common'; /** * @fileoverview added by tsickle * Generated from: xlsx.types.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @record */ function XlsxExportOptions() { } if (false) { /** * worksheets in the workbook, e.g: * - `{ Sheet1: { A1: { t:"n", v:10000 } } }` * - `[['1'], [1]]` * @type {?} */ XlsxExportOptions.prototype.sheets; /** * save file name, default: `export.xlsx` * @type {?|undefined} */ XlsxExportOptions.prototype.filename; /** @type {?|undefined} */ XlsxExportOptions.prototype.opts; /** * triggers when saveas * @type {?|undefined} */ XlsxExportOptions.prototype.callback; } /** * @record */ function XlsxExportSheet() { } if (false) { /** * arrays to a worksheet * @type {?} */ XlsxExportSheet.prototype.data; /** * sheet name * @type {?|undefined} */ XlsxExportSheet.prototype.name; } /** * @fileoverview added by tsickle * Generated from: xlsx.config.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class XlsxConfig { constructor() { /** * Xlsx library path */ this.url = '//cdn.bootcss.com/xlsx/0.12.13/xlsx.full.min.js'; /** * Defines which Xlsx optional modules should get loaded, e.g: * * `[ '//cdn.bootcss.com/xlsx/0.12.13/cpexcel.js' ]` */ this.modules = []; } } XlsxConfig.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ XlsxConfig.ɵprov = ɵɵdefineInjectable({ factory: function XlsxConfig_Factory() { return new XlsxConfig(); }, token: XlsxConfig, providedIn: "root" }); if (false) { /** * Xlsx library path * @type {?} */ XlsxConfig.prototype.url; /** * Defines which Xlsx optional modules should get loaded, e.g: * * `[ '//cdn.bootcss.com/xlsx/0.12.13/cpexcel.js' ]` * @type {?} */ XlsxConfig.prototype.modules; } /** * @fileoverview added by tsickle * Generated from: xlsx.service.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class XlsxService { /** * @param {?} cog * @param {?} http * @param {?} lazy */ constructor(cog, http, lazy) { this.cog = cog; this.http = http; this.lazy = lazy; } /** * @private * @return {?} */ init() { return typeof XLSX !== 'undefined' ? Promise.resolve([]) : this.lazy.load([(/** @type {?} */ (this.cog.url))].concat((/** @type {?} */ (this.cog.modules)))); } /** * @private * @param {?} wb * @return {?} */ read(wb) { /** @type {?} */ const ret = {}; wb.SheetNames.forEach((/** * @param {?} name * @return {?} */ (name) => { /** @type {?} */ const sheet = wb.Sheets[name]; ret[name] = XLSX.utils.sheet_to_json(sheet, { header: 1 }); })); return ret; } /** * 导入Excel并输出JSON,支持 `<input type="file">`、URL 形式 * @param {?} fileOrUrl * @param {?=} rABS 加载数据方式 `readAsBinaryString` (默认) 或 `readAsArrayBuffer`,[更多细节](http://t.cn/R3n63A0) * @return {?} */ import(fileOrUrl, rABS = 'readAsBinaryString') { return new Promise((/** * @param {?} resolve * @param {?} reject * @return {?} */ (resolve, reject) => { this.init() .then((/** * @return {?} */ () => { // from url if (typeof fileOrUrl === 'string') { this.http.request('GET', fileOrUrl, { responseType: 'arraybuffer' }).subscribe((/** * @param {?} res * @return {?} */ (res) => { /** @type {?} */ const wb = XLSX.read(new Uint8Array(res), { type: 'array' }); resolve(this.read(wb)); }), (/** * @param {?} err * @return {?} */ (err) => { reject(err); })); return; } // from file /** @type {?} */ const reader = new FileReader(); reader.onload = (/** * @param {?} e * @return {?} */ (e) => { /** @type {?} */ const wb = XLSX.read(e.target.result, { type: 'binary' }); resolve(this.read(wb)); }); reader[rABS](fileOrUrl); })) .catch((/** * @return {?} */ () => reject(`Unable to load xlsx.js`))); })); } /** * 导出 * @param {?} options * @return {?} */ export(options) { return this.init().then((/** * @return {?} */ () => { /** @type {?} */ const wb = XLSX.utils.book_new(); if (Array.isArray(options.sheets)) { ((/** @type {?} */ (options.sheets))).forEach((/** * @param {?} value * @param {?} index * @return {?} */ (value, index) => { /** @type {?} */ const ws = XLSX.utils.aoa_to_sheet(value.data); XLSX.utils.book_append_sheet(wb, ws, value.name || `Sheet${index + 1}`); })); } else { wb.SheetNames = Object.keys(options.sheets); wb.Sheets = options.sheets; } if (options.callback) options.callback(wb); /** @type {?} */ const wbout = XLSX.write(wb, Object.assign({ bookType: 'xlsx', bookSST: false, type: 'array' }, options.opts)); saveAs(new Blob([wbout], { type: 'application/octet-stream' }), options.filename || 'export.xlsx'); })); } } XlsxService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ XlsxService.ctorParameters = () => [ { type: XlsxConfig }, { type: HttpClient }, { type: LazyService } ]; /** @nocollapse */ XlsxService.ɵprov = ɵɵdefineInjectable({ factory: function XlsxService_Factory() { return new XlsxService(ɵɵinject(XlsxConfig), ɵɵinject(HttpClient), ɵɵinject(LazyService)); }, token: XlsxService, providedIn: "root" }); if (false) { /** * @type {?} * @private */ XlsxService.prototype.cog; /** * @type {?} * @private */ XlsxService.prototype.http; /** * @type {?} * @private */ XlsxService.prototype.lazy; } /** * @fileoverview added by tsickle * Generated from: xlsx.directive.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class XlsxDirective { /** * @param {?} srv */ constructor(srv) { this.srv = srv; } /** * @return {?} */ _click() { this.srv.export(this.data); } } XlsxDirective.decorators = [ { type: Directive, args: [{ selector: '[xlsx]', exportAs: 'xlsx', host: { '(click)': '_click()', }, },] } ]; /** @nocollapse */ XlsxDirective.ctorParameters = () => [ { type: XlsxService } ]; XlsxDirective.propDecorators = { data: [{ type: Input, args: ['xlsx',] }] }; if (false) { /** @type {?} */ XlsxDirective.prototype.data; /** * @type {?} * @private */ XlsxDirective.prototype.srv; } /** * @fileoverview added by tsickle * Generated from: xlsx.module.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ const COMPONENTS = [XlsxDirective]; class XlsxModule { } XlsxModule.decorators = [ { type: NgModule, args: [{ imports: [CommonModule, LxlibUtilModule], declarations: [...COMPONENTS], exports: [...COMPONENTS], },] } ]; /** * @fileoverview added by tsickle * Generated from: public_api.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle * Generated from: xlsx.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ export { XlsxConfig, XlsxDirective, XlsxModule, XlsxService }; //# sourceMappingURL=xlsx.js.map