找回密码
 立即注册

QQ登录

只需一步,快速开始

xxabc

注册会员

1

主题

2

帖子

9

积分

注册会员

积分
9
  • 30

    金币

  • 1

    主题

  • 2

    帖子

最新发帖
xxabc
注册会员   /  发表于:2024-3-28 16:24  /   查看:2008  /  回复:8
本帖最后由 Richard.Huang 于 2024-4-11 16:24 编辑

产品:SpreadJS
版本:V16.2.6
调研编号:
image.png234840697.png
  1. // 合并单元格
  2. mergeCells(length) {
  3.   let range = new GC.Spread.Sheets.Range(0, 0, length, 2);
  4.   // //remove old auto merge range
  5.   this.initSheet.autoMerge(
  6.     range,
  7.     GC.Spread.Sheets.AutoMerge.AutoMergeDirection.none,
  8.     GC.Spread.Sheets.AutoMerge.AutoMergeMode.free,
  9.     GC.Spread.Sheets.SheetArea.viewport,
  10.     GC.Spread.Sheets.AutoMerge.SelectionMode.merged
  11.   );
  12.   this.initSheet.autoMerge(
  13.     range,
  14.     GC.Spread.Sheets.AutoMerge.AutoMergeDirection.column,
  15.     GC.Spread.Sheets.AutoMerge.AutoMergeMode.free,
  16.     GC.Spread.Sheets.SheetArea.viewport,
  17.     GC.Spread.Sheets.AutoMerge.SelectionMode.merged
  18.   );
  19. }
复制代码

追加数据到excel中,自动合并列单元格数据时候出现报错,也按照方法进行清空合并。还是不行,求指点

8 个回复

倒序浏览
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-3-28 17:22:58
沙发
您好,您可以参考一下这篇帖子是否和您遇到的情况一样:https://gcdn.grapecity.com.cn/showtopic-77852-1-532.html

如果仍然无法解决问题,建议提供一份可供我们复现的demo,方便我们更好得为您排查问题
回复 使用道具 举报
trace
初级会员   /  发表于:2024-3-28 17:26:38
板凳
大概看了一下你的代码,清空merge和设置merge用的是同一个range,但是这两个range有可能是不一样的
回复 使用道具 举报
xxabc
注册会员   /  发表于:2024-3-28 17:41:01
地板
trace 发表于 2024-3-28 17:26
大概看了一下你的代码,清空merge和设置merge用的是同一个range,但是这两个range有可能是不一样的

那这range应该怎么判断呢,因为是追加的东西
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-3-29 09:06:00
6#
xxabc 发表于 2024-3-28 17:44
demo在附件里面,就是多次点击图中这个,然后多次新增

您好,经过调研我们发现,出现该报错的原因是,您前一次设置autoMerge的区域和后一次设置autoMerge的区域存在交集。clear方法无法清除前一次设置autoMerge的区域,我们需要将AutoMergeDirection设置为none,如下所示:

【需要注意的是,我们清除autoMerge区域时传入的range和设置自动autoMerge的区域必须完全一致】
  1. let range1 = new GC.Spread.Sheets.Range(0, 0, 10, 2);
  2. activeSheet.autoMerge(
  3.   range1,
  4.   GC.Spread.Sheets.AutoMerge.AutoMergeDirection.none,
  5.   GC.Spread.Sheets.AutoMerge.AutoMergeMode.free,
  6.   GC.Spread.Sheets.SheetArea.viewport,
  7.   GC.Spread.Sheets.AutoMerge.SelectionMode.merged
  8. );
  9. activeSheet.autoMerge(
  10.   range1,
  11.   GC.Spread.Sheets.AutoMerge.AutoMergeDirection.column,
  12.   GC.Spread.Sheets.AutoMerge.AutoMergeMode.free,
  13.   GC.Spread.Sheets.SheetArea.viewport,
  14.   GC.Spread.Sheets.AutoMerge.SelectionMode.merged
  15. );

  16. activeSheet.autoMerge(range1, GC.Spread.Sheets.AutoMerge.AutoMergeDirection.none);// 清除autoMerge区域,这里传入的range参数必须和之前的autoMerge的range一模一样

  17. let range2 = new GC.Spread.Sheets.Range(0, 0, 11, 2);
  18. activeSheet.autoMerge(
  19.   range2,
  20.   GC.Spread.Sheets.AutoMerge.AutoMergeDirection.none,
  21.   GC.Spread.Sheets.AutoMerge.AutoMergeMode.free,
  22.   GC.Spread.Sheets.SheetArea.viewport,
  23.   GC.Spread.Sheets.AutoMerge.SelectionMode.merged
  24. );
  25. activeSheet.autoMerge(
  26.   range2,
  27.   GC.Spread.Sheets.AutoMerge.AutoMergeDirection.column,
  28.   GC.Spread.Sheets.AutoMerge.AutoMergeMode.free,
  29.   GC.Spread.Sheets.SheetArea.viewport,
  30.   GC.Spread.Sheets.AutoMerge.SelectionMode.merged
  31. );
复制代码


回复 使用道具 举报
trace
初级会员   /  发表于:2024-3-29 14:50:14
7#
xxabc 发表于 2024-3-28 17:41
那这range应该怎么判断呢,因为是追加的东西

这个好像没有直接能获取到range的API,一个偷懒的方法,在merge前直接把整个sheet页的范围全unmerge了
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-3-29 17:39:52
8#
您可以参考上面的回复进行测试,测试结果也欢迎分享和交流
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-4-9 17:22:02
9#
您好,请问楼主的问题是否得到解决,如果仍然存在问题,欢迎继续跟帖询问
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-4-11 16:25:46
10#
您好,由于您长时间未回帖,本贴就先作结帖处理了,后续如果有其他新的问题,欢迎继续发新帖询问
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部