UNPKG

@evidential-fortune-sheet/fortune-excel

Version:

An Excel import/export import library for FortuneSheet

101 lines (100 loc) 4.08 kB
"use strict"; 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;