UNPKG

spartaxx.exportexcel

Version:

A npm package to export data to Excel using exceljs.

138 lines (137 loc) 6.51 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ExportExcel = void 0; const ExcelJS = __importStar(require("exceljs")); const path_1 = __importDefault(require("path")); const fs_1 = __importDefault(require("fs")); const ExportExcel = (options) => __awaiter(void 0, void 0, void 0, function* () { var _a, _b; let outputString = null; let result = null; const { data, columnsList, fileExportConfig, isFileTypeBase64, sheetName = "Sheet1" } = options; try { const workbook = new ExcelJS.Workbook(); const worksheet = workbook.addWorksheet(sheetName); worksheet.columns = columnsList.map(col => ({ header: col.DisplayName, key: col.ModelPropertyName, width: 20, })); const filteredData = data.map(item => { const filteredRow = {}; columnsList.forEach(col => { filteredRow[col.ModelPropertyName] = item[col.ModelPropertyName]; }); return filteredRow; }); filteredData.forEach(row => { worksheet.addRow(row); }); const headerRow = worksheet.getRow(1); headerRow.eachCell({ includeEmpty: true }, cell => { cell.font = { bold: true }; cell.fill = { type: 'pattern', pattern: 'solid', fgColor: { argb: 'FFFF00' } }; }); const lastRowNumber = ((_a = worksheet.lastRow) === null || _a === void 0 ? void 0 : _a.number) || 1; const lastColumnNumber = worksheet.columns.length; for (let rowIndex = 1; rowIndex <= lastRowNumber; rowIndex++) { const row = worksheet.getRow(rowIndex); for (let colIndex = 1; colIndex <= lastColumnNumber; colIndex++) { const cell = row.getCell(colIndex); cell.border = { top: { style: 'thin', color: { argb: 'FF000000' } }, left: { style: 'thin', color: { argb: 'FF000000' } }, bottom: { style: 'thin', color: { argb: 'FF000000' } }, right: { style: 'thin', color: { argb: 'FF000000' } } }; } } worksheet.columns.forEach(column => { if (column.eachCell) { let maxLength = column.header ? column.header.toString().length : 20; column.eachCell({ includeEmpty: true }, cell => { const cellValue = cell.value ? cell.value.toString() : ""; maxLength = Math.max(maxLength, cellValue.length); }); column.width = maxLength + 2; } }); if (isFileTypeBase64) { const buffer = yield workbook.xlsx.writeBuffer(); outputString = Buffer.from(buffer).toString('base64'); } else { const fileName = fileExportConfig && fileExportConfig != null ? (_b = fileExportConfig.FileName) === null || _b === void 0 ? void 0 : _b.replace("@@datetimestamp@@", yield getFileTimestamp()) : ""; const exportExcelFilePath = fileExportConfig && fileExportConfig != null ? `${fileExportConfig.AppDirName}${fileExportConfig.ExportDirName}${fileName}` : ""; const downloadExcelUrl = fileExportConfig && fileExportConfig != null ? `${fileExportConfig.AppBaseURL}${fileExportConfig.ExportDirName}${fileName}` : ""; const directoryPath = path_1.default.dirname(exportExcelFilePath); yield fs_1.default.promises.mkdir(directoryPath, { recursive: true }); yield workbook.xlsx.writeFile(exportExcelFilePath); result = { SharedPath: exportExcelFilePath, ServerUrl: downloadExcelUrl }; } } catch (error) { console.log("Failed"); outputString = null; result = null; } return isFileTypeBase64 ? outputString : result; }); exports.ExportExcel = ExportExcel; function getFileTimestamp() { return __awaiter(this, void 0, void 0, function* () { const currentDate = new Date(); const year = currentDate.getFullYear(); const month = ('0' + (currentDate.getMonth() + 1)).slice(-2); const day = ('0' + currentDate.getDate()).slice(-2); const hours = ('0' + currentDate.getHours()).slice(-2); const minutes = ('0' + currentDate.getMinutes()).slice(-2); const seconds = ('0' + currentDate.getSeconds()).slice(-2); return `${year}${month}${day}${hours}${minutes}${seconds}`; }); }