@evidential-fortune-sheet/fortune-excel
Version:
An Excel import/export import library for FortuneSheet
95 lines (94 loc) • 4.13 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 (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;