@tucmc/hazel
Version:
Clubs Data Processing Framework
91 lines (90 loc) • 2.68 kB
JavaScript
;
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;