找回密码
 立即注册

QQ登录

只需一步,快速开始

dexteryao 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-6-29 10:37  /   查看:2977  /  回复:0
之前有讲过如何对SpreadJS 进行图片绑定,其中一种方法是浮动图片,那么如何准确的在单元格,设置合并单元格上浮动图片呢?

请参考如下代码
通过getCellInfo方法,获取到单元格的实际坐标,再通过getSpanInfo的方法获取单元格包含合并后的实际大小,这样就可以准确的在一个合并单元格上浮动图片了。



  1. let spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
  2. let sheet = spread.getActiveSheet();
  3. let row = 15, col = 2
  4. sheet.setRowHeight(row, 100);
  5. sheet.setColumnWidth(col, 300);
  6. sheet.addSpan(row, col, 2, 2)

  7. sheet.setValue(row, col, [{src:"https://www.grapecity.com.cn/images/metalsmith/home/community_QRcode.jpg", width: 100, height:100},
  8.                     {src:"https://www.grapecity.com.cn/images/metalsmith/home/logo_funeng.png", width:200, height:100}])
  9. sheet.getCell(row, col).backColor("#533A6F")


  10. addCellImage(sheet, row, col);



  11. function getSpanInfo(sheet, row, col) {
  12.     var spans = sheet.getSpans(new GC.Spread.Sheets.Range(row, col, 1, 1));
  13.     if (spans && spans.length) {
  14.         var span = spans[0]
  15.         if(span.row === row, span.col === col){
  16.             var width = 0, height = 0;
  17.             for (var i = span.row; i < span.row + span.rowCount; i++) {
  18.                 height += sheet.getRowHeight(i)
  19.             }
  20.             for (var i = span.col; i < span.col + span.colCount; i++) {
  21.                 width += sheet.getColumnWidth(i)
  22.             }
  23.             return {
  24.                 width, height
  25.             }
  26.         }
  27.         else{
  28.             return null
  29.         }
  30.     }
  31.     else {
  32.         return {
  33.             width: sheet.getColumnWidth(col),
  34.             height: sheet.getRowHeight(row)
  35.         }
  36.     }
  37. }
  38. function getCellInfo(sheet, row, col) {

  39.     var width = 0, height = 0;
  40.     for (var i = 0; i < row; i++) {
  41.         height += sheet.getRowHeight(i)
  42.     }
  43.     for (var i = 0; i < col; i++) {
  44.         width += sheet.getColumnWidth(i)
  45.     }

  46.     return { width, height }
  47. }

  48. async function addCellImage(sheet, row, col){
  49.     let imageCellValue = sheet.getValue(row, col);
  50.     var spanInfo = getSpanInfo(sheet, row, col)
  51.     var cellInfo = getCellInfo(sheet, row, col)
  52.     if(imageCellValue && imageCellValue.length > 0){

  53.         let widthStart = 0;
  54.         for(var index in imageCellValue){
  55.             let img = imageCellValue[index]
  56.             if(img.src){
  57.                 let picture = sheet.pictures.add(sheet.name() + sheet.pictures.all().length, img.src, cellInfo.width + widthStart, cellInfo.height, img.width, spanInfo.height);
  58.                 widthStart += img.width
  59.             }
  60.         }
  61.     }
  62. }
复制代码


0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部