找回密码
 立即注册

QQ登录

只需一步,快速开始

硕㏒

金牌服务用户

53

主题

144

帖子

467

积分

金牌服务用户

积分
467

[已处理] 图片位置问题

硕㏒
金牌服务用户   /  发表于:2024-6-5 08:58  /   查看:1699  /  回复:5
1金币
本帖最后由 Wilson.Zhang 于 2024-7-1 18:43 编辑

产品:SpreadJS
版本:17.0.10
调研编号:SJS-24654
LastReview:2024-7-1
该问题已在17.1.0版本修复。

image.png537720031.png
我在这个单元格的位置插入了一张图片,我这个sheet又新增行的需求,通过代码在18行之后添加行,添加行之后,图片的位置不动,还是停留在原来的位置,这个问题又解决方案吗?以下是我新增行的代码,addRowsToReportSheet是新增报告sheet页的方法
  1.   addValidate() {
  2.       const spread = this.designer.getWorkbook();
  3.       const activeSheet = spread.getActiveSheet();

  4.       // 尝试获取basicrow名称管理器的范围
  5.       let customName = activeSheet.getCustomName("basicrow");

  6.       // 检查basicrow是否存在
  7.       if (!customName) {
  8.         console.error("命名范围 'basicrow' 未找到。");
  9.         this.visible = false;
  10.         return;
  11.       }

  12.       // 获取basicrow的表达式
  13.       let expression = customName.getExpression();
  14.       if (!expression) {
  15.         console.error("命名范围 'basicrow' 的表达式未定义。");
  16.         this.visible = false;
  17.         return;
  18.       }

  19.       // 获取basicrow的范围
  20.       let basicrow = expression.getRange();
  21.       if (!basicrow) {
  22.         console.error("无法获取 'basicrow' 的范围。");
  23.         this.visible = false;
  24.         return;
  25.       }

  26.       // 如果this.count存在,添加行
  27.       if (this.count) {
  28.         let totalRowCount = activeSheet.getRowCount(); // 获取当前工作表的总行数
  29.         let rowCountToAdd = Number(this.count); // 要添加的行数
  30.         // let colCount = basicrow.colCount; // basicrow的列数
  31.         let startRow = basicrow.row; // basicrow的起始行
  32.         let rowHeight = activeSheet.getRowHeight(startRow); // 获取basicrow行高
  33.         let table = activeSheet.tables.findByName("Table1"); // 查找名为"Table1"的表格
  34.         let tableRange = table.range(); // 获取表格范围
  35.         let currentRowCount = tableRange.rowCount; // 当前表格行数
  36.         let row = tableRange.row; // 表格起始行
  37.         console.log(basicrow, "basicrow");
  38.         console.log(tableRange, "tableRange");
  39.         // 在工作表末尾添加行
  40.         activeSheet.addRows(totalRowCount, rowCountToAdd * basicrow.rowCount);

  41.         // 在表格中插入新行
  42.         table.insertRows(
  43.           currentRowCount - 2,
  44.           rowCountToAdd * basicrow.rowCount,
  45.           true
  46.         );

  47.         // 设置新行的行高
  48.         for (let i = 1; i <= rowCountToAdd * basicrow.rowCount + 3; i++) {
  49.           activeSheet.setRowHeight(currentRowCount + row + i, rowHeight);
  50.         }
  51.         for (let i = 0; i < rowCountToAdd; i++) {
  52.           activeSheet.copyTo(
  53.             startRow,
  54.             basicrow.col,
  55.             currentRowCount + row + basicrow.rowCount * i,
  56.             basicrow.col,
  57.             basicrow.rowCount,
  58.             basicrow.colCount,
  59.             window.GC.Spread.Sheets.CopyToOptions.style |
  60.               window.GC.Spread.Sheets.CopyToOptions.formula |
  61.               window.GC.Spread.Sheets.CopyToOptions.span
  62.           );
  63.         }
  64.         // } else {
  65.         //   // 复制basicrow范围的内容到新插入的行
  66.         //   for (let i = 0; i < rowCountToAdd; i++) {
  67.         //     activeSheet.copyTo(
  68.         //       startRow,
  69.         //       basicrow.col,
  70.         //       currentRowCount + row + i,
  71.         //       basicrow.col,
  72.         //       1,
  73.         //       colCount,
  74.         //       window.GC.Spread.Sheets.CopyToOptions.style
  75.         //     );
  76.         //   }
  77.         // }

  78.         // 调用处理另一个工作表的方法
  79.         this.addRowsToReportSheet(spread, this.count);

  80.         // 重置计数器并隐藏当前视图
  81.         this.count = 1;
  82.         this.visible = false;
  83.       } else {
  84.         // 如果this.count不存在,则隐藏当前视图
  85.         this.visible = false;
  86.       }
  87.     },

  88.     addRowsToReportSheet(spread, rowCount) {
  89.       // 获取名为"检测数据录入-报告"的工作表
  90.       let reportSheet = spread.getSheetFromName("检测数据录入-报告");
  91.       console.log(reportSheet, "====reportSheet");

  92.       // 检查工作表是否存在
  93.       if (!reportSheet) {
  94.         console.error("工作表 '检测数据录入-报告' 未找到。");
  95.         return;
  96.       }

  97.       // 获取名为"reportrow"的命名范围
  98.       let reportCustomName = reportSheet.getCustomName("reportrow");
  99.       if (!reportCustomName) {
  100.         console.error("命名范围 'reportrow' 未找到。");
  101.         return;
  102.       }

  103.       // 获取命名范围的表达式
  104.       let reportExpression = reportCustomName.getExpression();
  105.       if (!reportExpression) {
  106.         console.error("命名范围 'reportrow' 的表达式未定义。");
  107.         return;
  108.       }

  109.       // 获取命名范围的范围
  110.       let reportRow = reportExpression.getRange();
  111.       if (!reportRow) {
  112.         console.error("无法获取 'reportrow' 的范围。");
  113.         return;
  114.       }
  115.       let totalRowCount = reportSheet.getRowCount(); // 获取当前工作表的总行数
  116.       let rowCountToAdd = Number(rowCount); // 要添加的行数
  117.       // let colCount = reportRow.colCount; // reportrow的列数
  118.       let startRow = reportRow.row; // reportrow的起始行
  119.       let rowHeight = reportSheet.getRowHeight(startRow); // 获取reportrow行高
  120.       let table = reportSheet.tables.findByName("Table2"); // 查找名为"Table2"的表格
  121.       let tableRange = table.range(); // 获取表格范围
  122.       let currentRowCount = tableRange.rowCount; // 当前表格行数
  123.       let row = tableRange.row; // 表格起始行
  124.       // 在工作表末尾添加行
  125.       reportSheet.addRows(totalRowCount, rowCountToAdd * reportRow.rowCount);
  126.       // 在表格中插入新行

  127.       table.insertRows(
  128.         currentRowCount - 2,
  129.         rowCountToAdd * reportRow.rowCount,
  130.         true
  131.       );
  132.       // 设置新行的行高
  133.       for (let i = 0; i < rowCountToAdd * reportRow.rowCount + 7; i++) {
  134.         reportSheet.setRowHeight(currentRowCount + row + i, rowHeight);
  135.       }
  136.       // // 复制basicrow范围的内容到新插入的行
  137.       for (let i = 0; i < rowCountToAdd; i++) {
  138.         reportSheet.copyTo(
  139.           startRow,
  140.           reportRow.col,
  141.           currentRowCount + row + reportRow.rowCount * i,
  142.           reportRow.col,
  143.           reportRow.rowCount,
  144.           reportRow.colCount,
  145.           window.GC.Spread.Sheets.CopyToOptions.style |
  146.             window.GC.Spread.Sheets.CopyToOptions.formula |
  147.             window.GC.Spread.Sheets.CopyToOptions.span
  148.         );
  149.       }
  150.     },
复制代码


image.png56587523.png

压实度 (1).ssjson

741.48 KB, 下载次数: 699

评分

参与人数 1金币 +300 收起 理由
Joestar.Xu + 300 感谢支持~

查看全部评分

5 个回复

倒序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-6-5 11:24:36
沙发
您好,您描述的情况我了解了,这边调研一下,后续有进展我会在本贴中回复您。
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-6-6 12:28:00
板凳
您好,您描述的情况初步认定为是一个Bug,目前正在修复中,等修复完毕我会在帖子下回复您。
回复 使用道具 举报
硕㏒
金牌服务用户   /  发表于:2024-6-6 13:25:46
地板
Joestar.Xu 发表于 2024-6-6 12:28
您好,您描述的情况初步认定为是一个Bug,目前正在修复中,等修复完毕我会在帖子下回复您。

需要发新版本修复吗,新版本大概什么时候发布?
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-6-6 13:46:50
5#
您好,该问题预计在17.1.0版本中修复,新版本将在本月底发布。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-7-1 18:43:44
6#
您好!17.1.0版本已发布,您可以升级后测试。谢谢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部