jsm-core
Version:
Core library for JSM project
40 lines (39 loc) • 1.25 kB
TypeScript
import * as excelJS from "exceljs";
import { BaseService } from "../../common/classes/base.service";
export type ExporterMapper<T = any> = (items: T) => any;
export type ExportItemsConfig<D> = {
exportDataCallback: (items: D[], edge: Record<string, any>, { tLabel, tSystem, }: {
tLabel: (string: string) => string;
tSystem: (string: string) => string;
}) => Promise<Exporter>;
};
export default class Exporter extends BaseService {
private _createdAt;
private _workbook;
private _sheets;
private _last_sheet;
private _mapper?;
private _data;
creator: string;
lastModifiedBy: string;
constructor();
setWorksheet(name: string, options?: Partial<excelJS.AddWorksheetOptions>): this;
addData<T extends string, D = any>(columns: {
[K in T]: Partial<excelJS.Column> & {
key?: K;
};
} | (() => {
[K in T]: Partial<excelJS.Column> & {
key?: K;
};
}), data: D[], mapper: (item: D) => {
[Key in T]: unknown;
}): void;
setLabels(sheetName: string, labels: {
[f: string]: {
label: string;
value: any;
};
}): void;
saveToFile(filename: string): Promise<void>;
}