找回密码
 立即注册

QQ登录

只需一步,快速开始

Lyn.Sueing

中级会员

62

主题

205

帖子

545

积分

中级会员

积分
545
Lyn.Sueing
中级会员   /  发表于:2021-11-3 16:13  /   查看:3455  /  回复:10
1金币
本帖最后由 Derrick.Jiao 于 2022-1-6 14:08 编辑

问题描述:
使用 sheet.shapes.add 方法给单元格行列区域设置了形状,
缩小视图时发现形状移位,
如下图所示:
image.png856128539.png
image.png795975646.png

关联贴:
https://gcdn.grapecity.com.cn/fo ... peid%26typeid%3D286

image.png637813720.png

最佳答案

查看完整内容

经调研,当sheet.zoom()调整为0.8时,列宽变为49.6,此时Worksheet渲染的单元格宽度为50,所以出现此偏差。 您可以参考下方workaround解决此问题:

10 个回复

倒序浏览
最佳答案
最佳答案
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-3 16:13:39
来自 7#
经调研,当sheet.zoom()调整为0.8时,列宽变为49.6,此时Worksheet渲染的单元格宽度为50,所以出现此偏差。
您可以参考下方workaround解决此问题:
  1. function setShapePos (shape, startRow, endRow, startColumn, endColumn, startRowOffset, startColumnOffset, endRowOffset, endColumnOffset) {        
  2.     shape.startRow(startRow);   
  3.     shape.endRow(endRow);   
  4.     shape.startColumn(startColumn);   
  5.     shape.endColumn(endColumn);   
  6.     shape.startRowOffset(startRowOffset);   
  7.     shape.startColumnOffset(startColumnOffset);      
  8.     shape.endRowOffset(endRowOffset);      
  9.     shape.endColumnOffset(endColumnOffset);
  10. }
  11. var shape1 = sheet.shapes.add('autoShape1', GC.Spread.Sheets.Shapes.AutoShapeType.rectangle);
  12. setShapePos(shape1, 1, 3, 0, 19, 0, 0, 20, 62);
  13. sheet.zoom(0.8);
  14. var shape2 = sheet.shapes.add('autoShape2', GC.Spread.Sheets.Shapes.AutoShapeType.rectangle);
  15. setShapePos(shape2, 5, 7, 0, 19, 0, 0, 20, 62);
复制代码


回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-3 17:04:13
2#
您好,如下动图所示,这边测试未复现您描述的问题。
请提供相关的json文件,这边实际测试下。

注:
如何提供ssjson文件:
1、使用spread.toJSON()导出json
2、新建txt文件,修改后缀为 .ssjson
3、将json粘贴,并将此文件上传。

111.gif
回复 使用道具 举报
Lyn.Sueing
中级会员   /  发表于:2021-11-3 17:07:46
3#
Lynn.Dou 发表于 2021-11-3 17:04
您好,如下动图所示,这边测试未复现您描述的问题。
请提供相关的json文件,这边实际测试下。

我不是设置形状后改变显示百分比的,是改变百分比之后分别执行往单元格上覆盖形状的代码。
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-3 17:34:07
4#
问题已复现,已将此问题记录下来,待有进展会在贴中更新。
本贴先做保留处理。
回复 使用道具 举报
Lyn.Sueing
中级会员   /  发表于:2021-11-3 17:52:23
5#
Lynn.Dou 发表于 2021-11-3 17:34
问题已复现,已将此问题记录下来,待有进展会在贴中更新。
本贴先做保留处理。

好 ~但是我这边的项目准备上线了,比较急,望尽快,谢谢你!~
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-11-3 18:07:19
6#
您客气了,有进展会立即通知您的。
回复 使用道具 举报
Lyn.Sueing
中级会员   /  发表于:2021-12-28 09:28:42
8#
Lynn.Dou 发表于 2021-11-23 12:02
经调研,当sheet.zoom()调整为0.8时,列宽变为49.6,此时Worksheet渲染的单元格宽度为50,所以出现此偏差。 ...

image.png124897765.png
请问,上图中的20 62是怎么来的呢?
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-12-28 15:55:51
9#
因为要解决列宽偏移的问题,所以需要对行高列宽做下调整。
默认行高20,默认列宽64。
缩放时行高未受影响,所以20保持不变,
列宽发生偏移,调整为62后视觉上不会出现形状移位。
20 62 这个数字不是固定的,需要根据实际的行高列宽(如果不是默认行高列宽)自己调整下,
目前来说除了以上workaround方案,也没有很好的办法了。
回复 使用道具 举报
Lyn.Sueing
中级会员   /  发表于:2021-12-28 16:25:56
10#
Lynn.Dou 发表于 2021-12-28 15:55
因为要解决列宽偏移的问题,所以需要对行高列宽做下调整。
默认行高20,默认列宽64。
缩放时行高未受影响 ...

好的
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部