@evidential-fortune-sheet/fortune-excel
Version:
An Excel import/export import library for FortuneSheet
101 lines (100 loc) • 4.08 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.setImages = void 0;
//获取图片在单元格的位置
var getImagePosition = function (num, arr) {
var index = 0;
var minIndex;
var maxIndex;
for (var i = 0; i < arr.length; i++) {
if (num < arr[i]) {
index = i;
break;
}
}
if (index == 0) {
minIndex = 0;
maxIndex = 1;
return Math.abs((num - 0) / (arr[maxIndex] - arr[minIndex])) + index;
}
else if (index == arr.length - 1) {
minIndex = arr.length - 2;
maxIndex = arr.length - 1;
}
else {
minIndex = index - 1;
maxIndex = index;
}
var min = arr[minIndex];
var max = arr[maxIndex];
var radio = Math.abs((num - min) / (max - min)) + index;
return radio;
};
var setImages = function (table, worksheet, workbook) {
var _a, _b, _c, _d;
var localTable = __assign({}, table);
var images = localTable.images, visibledatacolumn = localTable.visibledatacolumn, //所有行的位置
visibledatarow = localTable.visibledatarow;
if (typeof images != "object")
return;
for (var key in images) {
// 通过 base64 将图像添加到工作簿
var myBase64Image = images[key].src;
//开始行 开始列 结束行 结束列
var item = images[key];
var imageId = workbook.addImage({
base64: myBase64Image,
extension: "png",
});
if (!visibledatacolumn || !visibledatarow) {
var defaultColWidth = localTable.defaultColWidth || 73;
var defaultRowHeight = localTable.defaultRowHeight || 19;
var rowCount = localTable.data.length;
var colCount = localTable.data[0].length;
visibledatacolumn = [];
visibledatarow = [];
var lastVal = 0;
for (var i = 0; i < rowCount; i++) {
var rowHeight = (((_b = (_a = localTable.config) === null || _a === void 0 ? void 0 : _a.rowlen) === null || _b === void 0 ? void 0 : _b[i]) || defaultRowHeight);
var rowPosition = lastVal + rowHeight;
visibledatarow.push(rowPosition);
lastVal = rowPosition;
}
lastVal = 0;
for (var i = 0; i < colCount; i++) {
var colWidth = (((_d = (_c = localTable.config) === null || _c === void 0 ? void 0 : _c.columnlen) === null || _d === void 0 ? void 0 : _d[i]) || defaultColWidth);
var colPosition = lastVal + colWidth;
visibledatacolumn.push(colPosition);
lastVal = colPosition;
}
}
var col_st = getImagePosition(item.left, visibledatacolumn);
var row_st = getImagePosition(item.top, visibledatarow);
//模式1,图片左侧与luckysheet位置一样,像素比例保持不变,但是,右侧位置可能与原图所在单元格不一致
worksheet.addImage(imageId, {
tl: { col: col_st, row: row_st },
ext: { width: item.width, height: item.height },
});
//模式2,图片四个角位置没有变动,但是图片像素比例可能和原图不一样
// const w_ed = item.default.left+item.default.width;
// const h_ed = item.default.top+item.default.height;
// const col_ed = getImagePosition(w_ed,visibledatacolumn);
// const row_ed = getImagePosition(h_ed,visibledatarow);
// worksheet.addImage(imageId, {
// tl: { col: col_st, row: row_st},
// br: { col: col_ed, row: row_ed},
// });
}
};
exports.setImages = setImages;