找回密码
 立即注册

QQ登录

只需一步,快速开始

西安小菜鸟
注册会员   /  发表于:2024-11-26 14:01  /   查看:200  /  回复:5
1金币
    setIndiPageBorder(flag) {
      let border = flag ? new GC.Spread.Sheets.LineBorder("#8A2BE2", GC.Spread.Sheets.LineStyle.dashed) : new GC.Spread.Sheets.LineBorder("#000", GC.Spread.Sheets.LineStyle.empty)
      const workbook = this.designer.getWorkbook()
      workbook.suspendPaint()
      workbook.suspendEvent()
      let activeSheetName = workbook.getSheetFromName('Sheet1')
      activeSheetName.getRange(6, 14, 21, 9, GC.Spread.Sheets.SheetArea.viewport).setBorder(border,
          {
            top: true,
            bottom: true,
            left: true,
            right: true
          },
      );
      // 打开绘制
      workbook.resumeCalcService(true)
      workbook.resumeEvent()
      workbook.resumePaint()
    }
第一步 this.setIndiPageBorder(true)
第二步 this.setIndiPageBorder(false)
第三步 this.setIndiPageBorder(true)
边框样式就会错乱


image.png935466308.png image.png537720031.png image.png779963073.png



最佳答案

查看完整内容

根据您提供的信息,在对以行6列14为起始单元格的21行9列单元格区域设置边框,如下图所示,之后对该区域增行删行,那么边框包围的单元格区域有所变更,虽然起始单元格不便,但单元格区域可能增大、可能缩小。 以缩小为例,如下图所示,此时边框包围的单元格行区域为15行,原本区域应该为21行。而您的代码逻辑控制的仍然是21行单元格的边框,那么设置empty边框时所用区域依然是21行9列,而原本单元格区域末行27因删除行被上移 ...

5 个回复

倒序浏览
最佳答案
最佳答案
Wilson.Zhang
超级版主   /  发表于:2024-11-26 14:01:36
来自 4#
本帖最后由 Wilson.Zhang 于 2024-11-27 09:52 编辑
西安小菜鸟 发表于 2024-11-26 16:12
边框显示隐藏动作(setIndiPageBorder方法)的时候会操作单元格行的增加或者删除,可能会引起边框设置样式 ...

根据您提供的信息,在对以行6列14为起始单元格的21行9列单元格区域设置边框,如下图所示,之后对该区域增行删行,那么边框包围的单元格区域有所变更,虽然起始单元格不便,但单元格区域可能增大、可能缩小。
1732671173596.png509743346.png

以缩小为例,如下图所示,此时边框包围的单元格行区域为15行,原本区域应该为21行。而您的代码逻辑控制的仍然是21行单元格的边框,那么设置empty边框时所用区域依然是21行9列,而原本单元格区域末行27因删除行被上移至当前的行21,因此行21的边框紫色虚线将被保留。
1732671202512.png323423461.png

设置完empty边框后,再设置紫色虚线边框,作用的区域仍然是21行9列,此时便会出现边框混乱的情形,如下图所示:
1732671404001.png383002318.png

如果您希望在增行或删行后,无论原始区域如何变化,empty边框设置后原始区域的当前范围能够消除紫色边框,那可以通过Worksheet:clear()清除当前区域的紫色边框,这样也可以代替设置empty边框。但是如果您的区域中除了边框还有别的样式,那么通过清除的方式就不适用了。在这种情况下,可以通过Worksheet:getUsedRange()获取设置了样式的区域,这个区域就表示了当前设置了样式的区域,包括紫色边框包围的区域,对这个区域设置empty边框即可。随后,如果您仍然需要将紫色边框设置在21行9列的单元格区域,保留原有对紫色边框的设置代码即可。因此,仅需要调整下对empty边框的设置逻辑即可。

您可以参考上述方式结合您的实际场景测试解决问题。
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-11-26 15:39:37
2#
您好!我使用您提供的代码片段在17.1.9版本测试,未能复现问题,如下动图所示:
边框设置正常.gif

请教下您使用的版本,如果不是17.1.9版本,可以在17.1.9版本测试看还是否能够复现问题。
回复 使用道具 举报
西安小菜鸟
注册会员   /  发表于:2024-11-26 16:12:41
3#
Wilson.Zhang 发表于 2024-11-26 15:39
您好!我使用您提供的代码片段在17.1.9版本测试,未能复现问题,如下动图所示:

边框显示隐藏动作(setIndiPageBorder方法)的时候会操作单元格行的增加或者删除,可能会引起边框设置样式错乱,setBoder设置边框样式:activeSheetName.getRange(6, 14, 21, 9)方法参数都是一样的,请问图三这种情况样式错乱问题有没有解决方法?
回复 使用道具 举报
西安小菜鸟
注册会员   /  发表于:2024-11-27 17:24:57
5#
Wilson.Zhang 发表于 2024-11-27 09:44
根据您提供的信息,在对以行6列14为起始单元格的21行9列单元格区域设置边框,如下图所示,之后对该区域增 ...

感谢,已解决
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-11-28 08:33:13
6#

不客气,问题即已解决,那就结帖了。如有新问题,欢迎发新帖沟通。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部