UNPKG

@evidential-fortune-sheet/fortune-excel

Version:

An Excel import/export import library for FortuneSheet

95 lines (94 loc) 4.13 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.setStyleAndValue = void 0; var lodash_1 = __importDefault(require("lodash")); var ExcelConvert_1 = require("./ExcelConvert"); var isTime = function (d) { return d === "hh:mm"; }; var formatHyperlink = function (address) { var sheetCell = address.split("!"); return "#'".concat(sheetCell[0], "'!").concat(sheetCell[1] || "A1"); }; var setStyleAndValue = function (luckysheet, table, worksheet) { var cellArr = table === null || table === void 0 ? void 0 : table.data; if (!Array.isArray(cellArr)) return; cellArr.forEach(function (row, rowid) { var dbrow = worksheet.getRow(rowid + 1); //设置单元格行高,默认乘以1.2倍 dbrow.height = luckysheet.getRowHeight([rowid])[rowid] / 1.2; row.every(function (cell, columnid) { var _a; // Modifed the exporter // if (!cell || _.isNil(cell.v) || _.isNaN(cell.v)) return true; if (!cell || (!cell.ct && (lodash_1.default.isNaN(cell.v) || lodash_1.default.isNil(cell.v)))) return true; if (rowid == 0) { var dobCol = worksheet.getColumn(columnid + 1); //设置单元格列宽除以8 dobCol.width = luckysheet.getColumnWidth([columnid])[columnid] / 8; } var fill = (0, ExcelConvert_1.fillConvert)(cell.bg); var font = (0, ExcelConvert_1.fontConvert)(cell.ff, cell.fc, cell.bl, cell.it, cell.fs, cell.cl, cell.un); var alignment = (0, ExcelConvert_1.alignmentConvert)(cell.vt, cell.ht, cell.tb && parseInt(cell.tb, 10), cell.tr && parseInt(cell.tr, 10)); var value; var v = ""; var numFmt = undefined; if (cell.hl) { var hlData = (_a = table.hyperlink) === null || _a === void 0 ? void 0 : _a["".concat(cell.hl.r, "_").concat(cell.hl.c)]; if ((hlData === null || hlData === void 0 ? void 0 : hlData.linkType) === "webpage") { v = { text: cell.v, hyperlink: hlData === null || hlData === void 0 ? void 0 : hlData.linkAddress, tooltip: cell.v, }; } // will not work in Google Sheets but will work in excel (open issue in exceljs) else if (hlData.linkType === "cellrange" || hlData.linkType === "sheet") { v = { text: cell.v, hyperlink: formatHyperlink(hlData === null || hlData === void 0 ? void 0 : hlData.linkAddress) }; } } else if (cell.ct && cell.ct.t == "inlineStr") { var s = cell.ct.s; s.forEach(function (val) { v += val.v; }); } else if (cell.ct && cell.ct.t == "n") { v = +cell.v; if (cell.ct !== "General") numFmt = cell.ct.fa; } else if (cell.ct && cell.ct.t == "d") { var mockDate = isTime(cell.ct.fa) ? "2000-01-01 " : ""; v = new Date(mockDate + cell.m); numFmt = cell.ct.fa; } else { v = cell.v; } if (cell.f && typeof v !== "object") { value = { formula: cell.f.startsWith("=") ? cell.f.slice(1) : cell.f, result: v, }; } else { value = v; } var target = worksheet.getCell(rowid + 1, columnid + 1); target.fill = fill; target.font = font; target.alignment = alignment; target.value = value; target.numFmt = numFmt; return true; }); }); }; exports.setStyleAndValue = setStyleAndValue;