UNPKG

xlsx-encrypter

Version:

Service for generating and encrypting Excel/XLSX files

56 lines (48 loc) 1.34 kB
import { WorkBook, WorkSheet, utils, writeFile } from "xlsx"; const XlsxPopulate = require("xlsx-populate"); export interface WorkSheetWithName { sheet: WorkSheet; name: string; } export class XlsxGenerator { public createWorkSheet( data: unknown[], sheetName: string, headers?: string[], cellOrigin?: string ): WorkSheetWithName { const options = { header: headers, origin: cellOrigin, }; return { sheet: utils.json_to_sheet(data, options), name: sheetName, }; } public async exportWorkSheetsToFile( filePath: string, workSheets: WorkSheetWithName[], password?: string ): Promise<void> { const workBook = this.createWorkBook(); for (const workSheet of workSheets) { utils.book_append_sheet(workBook, workSheet.sheet, workSheet.name); } writeFile(workBook, filePath); if (password) { await this.encryptXlsxFile(filePath, password); } } private createWorkBook(): WorkBook { return utils.book_new(); } private async encryptXlsxFile(filePath: string, password: string) { // eslint-disable-next-line @typescript-eslint/no-explicit-any await XlsxPopulate.fromFileAsync(filePath).then(async (workbook: any) => { await workbook.toFileAsync(filePath, { password, }); }); } }