ng-cw-v12
Version:
Angular UI component library
93 lines (88 loc) • 5.03 kB
JavaScript
import * as i0 from '@angular/core';
import { Component, Input, NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { __awaiter } from 'tslib';
import * as XLSX from 'xlsx-js-style';
class ExcelViewerComponent {
constructor(eleRef) {
this.eleRef = eleRef;
this.ncUrl = '';
this.sheetNameMode = false;
}
set ncSheetName(value) {
this.sheetNameMode = value !== null && value !== undefined && value !== false && value !== 'false';
}
ngOnChanges(changes) {
if (changes['ncUrl']) {
this.renderExcelDocument();
}
}
renderExcelDocument() {
return __awaiter(this, void 0, void 0, function* () {
const response = yield fetch(this.ncUrl);
const blob = yield response.blob();
const reader = new FileReader();
//通过readAsArrayBuffer将blob转换为ArrayBuffer对
reader.readAsArrayBuffer(blob);
reader.onload = (event) => {
var _a;
// 读取ArrayBuffer数据变成Uint8Array
const data = new Uint8Array((_a = event.target) === null || _a === void 0 ? void 0 : _a.result);
// 这里的data里面的类型和后面的type类型要对应
const workbook = XLSX.read(data, { type: "array" });
const sheetNames = workbook.SheetNames; // 工作表名称
let htmlArray = [];
for (let i = 0; i < sheetNames.length; i++) {
// var excelData = XLSX.utils.sheet_to_json(worksheet); //JSON
const worksheet = workbook.Sheets[sheetNames[i]];
if (this.sheetNameMode) {
htmlArray.push(`<h2>${sheetNames[i]}</h2>`);
}
htmlArray.push(XLSX.utils.sheet_to_html(worksheet));
}
const container = this.eleRef.nativeElement.querySelector('#excel-container');
container.innerHTML = htmlArray.join('');
};
});
}
}
ExcelViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: ExcelViewerComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
ExcelViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.1.5", type: ExcelViewerComponent, selector: "nc-excel-viewer", inputs: { ncUrl: "ncUrl", ncSheetName: "ncSheetName" }, usesOnChanges: true, ngImport: i0, template: "<div id=\"excel-container\"></div>\n", styles: ["#excel-container{width:100%;height:100%;padding:10px}#excel-container ::ng-deep table{border-collapse:separate;border-spacing:0;border-right:1px solid #d6d6d6;border-bottom:1px solid #d6d6d6;margin-bottom:10px}#excel-container ::ng-deep table:last-child{margin-bottom:0}#excel-container ::ng-deep table td{border-left:1px solid #d6d6d6;border-top:1px solid #d6d6d6;padding:5px 10px;text-align:center;white-space:nowrap}\n"] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: ExcelViewerComponent, decorators: [{
type: Component,
args: [{
selector: 'nc-excel-viewer',
templateUrl: './excel-viewer.component.html',
styleUrls: ['./excel-viewer.component.less']
}]
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { ncUrl: [{
type: Input
}], ncSheetName: [{
type: Input
}] } });
class NcExcelViewerModule {
}
NcExcelViewerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: NcExcelViewerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
NcExcelViewerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: NcExcelViewerModule, declarations: [ExcelViewerComponent], imports: [CommonModule], exports: [ExcelViewerComponent] });
NcExcelViewerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: NcExcelViewerModule, imports: [[
CommonModule
]] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.5", ngImport: i0, type: NcExcelViewerModule, decorators: [{
type: NgModule,
args: [{
declarations: [
ExcelViewerComponent
],
imports: [
CommonModule
],
exports: [
ExcelViewerComponent
]
}]
}] });
/**
* Generated bundle index. Do not edit.
*/
export { ExcelViewerComponent, NcExcelViewerModule };
//# sourceMappingURL=ng-cw-v12-excel-viewer.js.map