UNPKG

@tucmc/hazel

Version:
91 lines (90 loc) 2.68 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Workbook = void 0; const exceljs_1 = __importDefault(require("exceljs")); const DMap_1 = require("../../util/data/DMap"); const Worksheet_1 = require("./Worksheet"); class Workbook { book; workbook = new exceljs_1.default.Workbook(); generateSheet = (worksheet, appendSheetData) => { appendSheetData(true); }; cellStyle = () => { }; constructor(param) { if (param.length < 1) { this.book = []; return; } if (param[0] instanceof Worksheet_1.Worksheet) { this.book = param; } else { this.book = param.map((rs) => { const rawSheet = rs; return new Worksheet_1.Worksheet(rawSheet); }); } } getSheet(page) { return this.book[page]; } addSheet(sheet) { this.book.push(sheet); } setGenerationPattern(pattern) { this.generateSheet = pattern; } applyStyle(s, sheet, keys) { const rows = s.getRecords(); if (keys && rows[0]) { rows.push(rows[0]); } rows.forEach((d, r) => { const de = new DMap_1.DMap(d); de.iterateSync((k, v, c) => { this.cellStyle({ s: s.name, c: c + 1, r: r + 1 }, sheet.getCell(r + 1, c + 1)); }); }); } setStyle(ce) { this.cellStyle = ce; } appendSheetData(s, sheet, keys) { let ckeys = keys; s.getRecords().forEach((d) => { if (ckeys) { sheet.addRow(new DMap_1.DMap(d).keys()); ckeys = false; } sheet.addRow(new DMap_1.DMap(d).values()); }); } generateWorkbook() { this.book.forEach((s) => { const sheet = this.workbook.addWorksheet(s.name); let ik = true; this.generateSheet(sheet, (keys) => { this.appendSheetData(s, sheet, keys); ik = keys; }); this.applyStyle(s, sheet, ik); }); } async save(path) { if (this.workbook.worksheets.length === 0) { this.generateWorkbook(); } await this.workbook.xlsx.writeFile(path); } async saveAsCSV(path) { if (this.workbook.worksheets.length === 0) { this.generateWorkbook(); } await this.workbook.csv.writeFile(path); } } exports.Workbook = Workbook;