找回密码
 立即注册

QQ登录

只需一步,快速开始

Jes

注册会员

10

主题

36

帖子

136

积分

注册会员

积分
136
Jes
注册会员   /  发表于:2019-5-27 22:44  /   查看:5174  /  回复:7
本帖最后由 Jes 于 2019-5-27 22:50 编辑

      //获取字体样式
      var ff = that.attr('lay-Value')
     //获取选中区域
      var selectedRanges = sheet.getSelections();
      var row,col,rowCount,colCount

      for (var i = 0; i < selectedRanges.length; i++) {
        row = selectedRanges.row
        col = selectedRanges.col
        rowCount = selectedRanges.rowCount
        colCount = selectedRanges.colCount

        for (var j = row; j < (row + rowCount); j++) {
          for (var k = col; k < (col + colCount); k++) {
            

            var cssStyle = sheet.getStyle(j,k) || new GC.Spread.Sheets.Style();
            var fontElement = $("<span></span>");
            fontElement.css("font", cssStyle.font);
            fontElement.css("font-family", ff);
            cssStyle.font = fontElement.css("font");
            sheet.setStyle(j,k,cssStyle);
          }
        }
      }

最后面这里由于没有找到能设置整个区域样式的方法 只能多层嵌套 渲染的慢了一些 想咨询下有没有合适的代替方案

7 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-5-28 10:39:36
沙发
您好,实际上渲染某个区域的样式,可以通过sheet.getRange().font() 这种方式来设置,

参考API:

https://demo.grapecity.com.cn/sp ... sheet~getRange.html

https://demo.grapecity.com.cn/sp ... eets.CellRange.html

实际上这种调用方式背后的逻辑依然是遍历单元格设置样式,

所以也算是批量操作,

批量操作表单时必须挂起表单的绘制行为,

参考示例:

https://demo.grapecity.com.cn/Sp ... #/demos/spreadPaint

关于SpreadJS样式的了解,请参考文章:

https://www.grapecity.com.cn/blo ... ply-spreadjs-styles
回复 使用道具 举报
Jes
注册会员   /  发表于:2019-5-28 11:04:55
板凳
KevinChen 发表于 2019-5-28 10:39
您好,实际上渲染某个区域的样式,可以通过sheet.getRange().font() 这种方式来设置,

参考API:

由于我的字体和字号等font样式是分开选择的 一开始我用sheet.getRange().font()这种方式 只能修改一个属性 比如我把字号设置成12 再设置字体 字号又变了 所以才用的setStyle() 不过加上sheet.suspendPaint()已经能快速的渲染了
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-5-28 15:15:36
地板
注意到你的代码,实际上不需要通过创建一个Dom的方式设置这么麻烦,直接给font赋值字符串就可以,

参考示例:

https://demo.grapecity.com.cn/Sp ... Sample/#/demos/font
回复 使用道具 举报
Jes
注册会员   /  发表于:2019-5-28 21:29:19
5#
KevinChen 发表于 2019-5-28 15:15
注意到你的代码,实际上不需要通过创建一个Dom的方式设置这么麻烦,直接给font赋值字符串就可以,

参考 ...

这种方式不能修改单独某一个属性吧 比如只修改字体 不修改字号 我需要像excel那样 所有的属性单独修改 拼接字符串也不好弄
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-5-29 10:36:21
6#
您好,设置font的字体、加粗、大小目前都是通过font实现的,没有其他接口,因此建议可以考虑一下字符串拼接。
回复 使用道具 举报
Jes
注册会员   /  发表于:2019-5-29 15:47:08
7#
KevinChen 发表于 2019-5-29 10:36
您好,设置font的字体、加粗、大小目前都是通过font实现的,没有其他接口,因此建议可以考虑一下字符串拼接 ...

好的 反正我的主要问题侧重点是在 渲染速度方面 已经妥善解决了
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-5-29 17:29:14
8#
感谢反馈,这方面我们会提出需求,持续改进~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部