1金币
本帖最后由 Wilson.Zhang 于 2024-7-1 18:43 编辑
产品:SpreadJS
版本:17.0.10
调研编号:SJS-24654
LastReview:2024-7-1
该问题已在17.1.0版本修复。
我在这个单元格的位置插入了一张图片,我这个sheet又新增行的需求,通过代码在18行之后添加行,添加行之后,图片的位置不动,还是停留在原来的位置,这个问题又解决方案吗?以下是我新增行的代码,addRowsToReportSheet是新增报告sheet页的方法- addValidate() {
- const spread = this.designer.getWorkbook();
- const activeSheet = spread.getActiveSheet();
- // 尝试获取basicrow名称管理器的范围
- let customName = activeSheet.getCustomName("basicrow");
- // 检查basicrow是否存在
- if (!customName) {
- console.error("命名范围 'basicrow' 未找到。");
- this.visible = false;
- return;
- }
- // 获取basicrow的表达式
- let expression = customName.getExpression();
- if (!expression) {
- console.error("命名范围 'basicrow' 的表达式未定义。");
- this.visible = false;
- return;
- }
- // 获取basicrow的范围
- let basicrow = expression.getRange();
- if (!basicrow) {
- console.error("无法获取 'basicrow' 的范围。");
- this.visible = false;
- return;
- }
- // 如果this.count存在,添加行
- if (this.count) {
- let totalRowCount = activeSheet.getRowCount(); // 获取当前工作表的总行数
- let rowCountToAdd = Number(this.count); // 要添加的行数
- // let colCount = basicrow.colCount; // basicrow的列数
- let startRow = basicrow.row; // basicrow的起始行
- let rowHeight = activeSheet.getRowHeight(startRow); // 获取basicrow行高
- let table = activeSheet.tables.findByName("Table1"); // 查找名为"Table1"的表格
- let tableRange = table.range(); // 获取表格范围
- let currentRowCount = tableRange.rowCount; // 当前表格行数
- let row = tableRange.row; // 表格起始行
- console.log(basicrow, "basicrow");
- console.log(tableRange, "tableRange");
- // 在工作表末尾添加行
- activeSheet.addRows(totalRowCount, rowCountToAdd * basicrow.rowCount);
- // 在表格中插入新行
- table.insertRows(
- currentRowCount - 2,
- rowCountToAdd * basicrow.rowCount,
- true
- );
- // 设置新行的行高
- for (let i = 1; i <= rowCountToAdd * basicrow.rowCount + 3; i++) {
- activeSheet.setRowHeight(currentRowCount + row + i, rowHeight);
- }
- for (let i = 0; i < rowCountToAdd; i++) {
- activeSheet.copyTo(
- startRow,
- basicrow.col,
- currentRowCount + row + basicrow.rowCount * i,
- basicrow.col,
- basicrow.rowCount,
- basicrow.colCount,
- window.GC.Spread.Sheets.CopyToOptions.style |
- window.GC.Spread.Sheets.CopyToOptions.formula |
- window.GC.Spread.Sheets.CopyToOptions.span
- );
- }
- // } else {
- // // 复制basicrow范围的内容到新插入的行
- // for (let i = 0; i < rowCountToAdd; i++) {
- // activeSheet.copyTo(
- // startRow,
- // basicrow.col,
- // currentRowCount + row + i,
- // basicrow.col,
- // 1,
- // colCount,
- // window.GC.Spread.Sheets.CopyToOptions.style
- // );
- // }
- // }
- // 调用处理另一个工作表的方法
- this.addRowsToReportSheet(spread, this.count);
- // 重置计数器并隐藏当前视图
- this.count = 1;
- this.visible = false;
- } else {
- // 如果this.count不存在,则隐藏当前视图
- this.visible = false;
- }
- },
- addRowsToReportSheet(spread, rowCount) {
- // 获取名为"检测数据录入-报告"的工作表
- let reportSheet = spread.getSheetFromName("检测数据录入-报告");
- console.log(reportSheet, "====reportSheet");
- // 检查工作表是否存在
- if (!reportSheet) {
- console.error("工作表 '检测数据录入-报告' 未找到。");
- return;
- }
- // 获取名为"reportrow"的命名范围
- let reportCustomName = reportSheet.getCustomName("reportrow");
- if (!reportCustomName) {
- console.error("命名范围 'reportrow' 未找到。");
- return;
- }
- // 获取命名范围的表达式
- let reportExpression = reportCustomName.getExpression();
- if (!reportExpression) {
- console.error("命名范围 'reportrow' 的表达式未定义。");
- return;
- }
- // 获取命名范围的范围
- let reportRow = reportExpression.getRange();
- if (!reportRow) {
- console.error("无法获取 'reportrow' 的范围。");
- return;
- }
- let totalRowCount = reportSheet.getRowCount(); // 获取当前工作表的总行数
- let rowCountToAdd = Number(rowCount); // 要添加的行数
- // let colCount = reportRow.colCount; // reportrow的列数
- let startRow = reportRow.row; // reportrow的起始行
- let rowHeight = reportSheet.getRowHeight(startRow); // 获取reportrow行高
- let table = reportSheet.tables.findByName("Table2"); // 查找名为"Table2"的表格
- let tableRange = table.range(); // 获取表格范围
- let currentRowCount = tableRange.rowCount; // 当前表格行数
- let row = tableRange.row; // 表格起始行
- // 在工作表末尾添加行
- reportSheet.addRows(totalRowCount, rowCountToAdd * reportRow.rowCount);
- // 在表格中插入新行
- table.insertRows(
- currentRowCount - 2,
- rowCountToAdd * reportRow.rowCount,
- true
- );
- // 设置新行的行高
- for (let i = 0; i < rowCountToAdd * reportRow.rowCount + 7; i++) {
- reportSheet.setRowHeight(currentRowCount + row + i, rowHeight);
- }
- // // 复制basicrow范围的内容到新插入的行
- for (let i = 0; i < rowCountToAdd; i++) {
- reportSheet.copyTo(
- startRow,
- reportRow.col,
- currentRowCount + row + reportRow.rowCount * i,
- reportRow.col,
- reportRow.rowCount,
- reportRow.colCount,
- window.GC.Spread.Sheets.CopyToOptions.style |
- window.GC.Spread.Sheets.CopyToOptions.formula |
- window.GC.Spread.Sheets.CopyToOptions.span
- );
- }
- },
复制代码
|
|