@corbe30/fortune-excel
Version:
An Excel import/export import library for FortuneSheet
94 lines (93 loc) • 4.27 kB
JavaScript
;
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 (table, worksheet) {
var cellArr = table === null || table === void 0 ? void 0 : table.data;
if (!Array.isArray(cellArr))
return;
cellArr.forEach(function (row, rowid) {
var _a, _b;
var dbrow = worksheet.getRow(rowid + 1);
dbrow.height = (((_b = (_a = table.config) === null || _a === void 0 ? void 0 : _a.rowlen) === null || _b === void 0 ? void 0 : _b[rowid]) || 19) / 1.2;
row.every(function (cell, columnid) {
var _a, _b, _c, _d;
if (rowid == 0) {
var dobCol = worksheet.getColumn(columnid + 1);
dobCol.width = (((_b = (_a = table.config) === null || _a === void 0 ? void 0 : _a.columnlen) === null || _b === void 0 ? void 0 : _b[columnid]) || 73) / 8;
}
if (!cell)
return true;
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 target = worksheet.getCell(rowid + 1, columnid + 1);
target.fill = fill;
target.font = font;
target.alignment = alignment;
if ((lodash_1.default.isNil(cell.v) || lodash_1.default.isNaN(cell.v)) && ((_c = cell === null || cell === void 0 ? void 0 : cell.ct) === null || _c === void 0 ? void 0 : _c.t) !== "inlineStr")
return true;
var value;
var v = "";
var numFmt = undefined;
if (cell.hl) {
var hlData = (_d = table.hyperlink) === null || _d === void 0 ? void 0 : _d["".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, num) {
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;
}
target.value = value;
target.numFmt = numFmt;
return true;
});
});
};
exports.setStyleAndValue = setStyleAndValue;