祁画 发表于 2024-11-11 18:04:33

【17.1.7】 我希望给整个画布绘制一些分割线如何实现

我希望给整个画布绘制一些分割线如何实现

Wilson.Zhang 发表于 2024-11-11 18:04:34

祁画 发表于 2024-11-12 14:31
但是如果使用style设置分割线,我再去设置边框,分割线就消失了,而且导出的时候我希望边框样式可以导出。

那就不使用单元格边框为分割线了,使用浮动元素或形状线条设置边框线吧,这些元素不会取代单元格的Style,在导出前取消分割线,导入后需要时再设置。

Wilson.Zhang 发表于 2024-11-12 09:39:49

您好!可以尝试通过Style设置,对某一列单元格的有边框或某一行单元格的上边框设置明显颜色的线条以标识。

祁画 发表于 2024-11-12 09:45:08

比如我要给第一行单元格设置这个分割线,是给第一行每个单元格都遍历过去,通过setStyle设置嘛

祁画 发表于 2024-11-12 09:49:18

我可以这样拿到canvas直接绘制吗
const canvas = activeWorkbook.getHost().querySelector('');
const ctx = canvas.getContext('2d');

祁画 发表于 2024-11-12 09:52:39

但是这样绘制好像我需要知道初始化渲染结束跟重绘结束的钩子,在这里面拿到canvas重新画线条。

祁画 发表于 2024-11-12 10:20:56

我们业务上不太适用使用style去绘制,因为这个分割线只存在于设计器里面,我们预览的时候是不能有这个分割线的 ,如果通过style去设置的话,toJson导出数据,再预览的时候通过fromjson去导入,style里面就会带着这个分割线的样式。

Wilson.Zhang 发表于 2024-11-12 13:50:00

本帖最后由 Wilson.Zhang 于 2024-11-14 09:01 编辑

建议您通过setStyle的方式设置,遍历单元格设置样式是一种方式,SperadJS提供了另一种更便捷的批量设置方式,对单元格区域整体设置边框,可参考如下代码:
sheet.getRange(2, 0, 1, 10).borderBottom(new GC.Spread.Sheets.LineBorder("blue", GC.Spread.Sheets.LineStyle.mediumDashed));
上述代码执行效果如下图所示:


可以参考官网API文档了解详情:
https://demo.grapecity.com.cn/spreadjs/help/api/classes/GC.Spread.Sheets.CellRange#borderbottom



另外,可以在导出时不携带样式,但是这样的话也无法携带其他样式。应对这种情况,可以在导出时取消分割线,导出的文件中即可不携带分割线,同时又保持了其他样式。您可以自行评估下看是否可行。

祁画 发表于 2024-11-12 14:31:18

但是如果使用style设置分割线,我再去设置边框,分割线就消失了,而且导出的时候我希望边框样式可以导出。

祁画 发表于 2024-11-12 18:12:49

浮动元素可以禁止拖拽嘛
页: [1] 2 3
查看完整版本: 【17.1.7】 我希望给整个画布绘制一些分割线如何实现