找回密码
 立即注册

QQ登录

只需一步,快速开始

头发乱了

注册会员

2

主题

8

帖子

18

积分

注册会员

积分
18
  • 74

    金币

  • 2

    主题

  • 8

    帖子

最新发帖
头发乱了
注册会员   /  发表于:2024-12-10 17:57  /   查看:70  /  回复:7
1金币
image.png466388549.png image.png265022887.png 插入列后格式与其它列格式不一致

最佳答案

查看完整内容

您好!插入行列并不会复制基行基列的样式,这个是SpreadJS的产品设计,将为插入行列设置样式的控制权交给用户,即需要在插入行列后再根据需要设置样式。可以监听ColumnChanged事件,插入列后将基列的样式通过Worksheet:copyTo()复制在先插入列上。 可以参考官网API文档了解上述接口的详细使用方式: ColumnChanged--https://demo.grapecity.com.cn/spreadjs/help/api/classes/GC.Spread.Sheets.Events#columnchanged Workshee ...

7 个回复

倒序浏览
最佳答案
最佳答案
Wilson.Zhang
超级版主   /  发表于:2024-12-10 17:57:06
来自 2#
您好!插入行列并不会复制基行基列的样式,这个是SpreadJS的产品设计,将为插入行列设置样式的控制权交给用户,即需要在插入行列后再根据需要设置样式。可以监听ColumnChanged事件,插入列后将基列的样式通过Worksheet:copyTo()复制在先插入列上。

可以参考官网API文档了解上述接口的详细使用方式:
ColumnChanged--https://demo.grapecity.com.cn/sp ... vents#columnchanged
Worksheet:copyTo()--https://demo.grapecity.com.cn/sp ... ts.Worksheet#copyto
回复 使用道具 举报
头发乱了
注册会员   /  发表于:2024-12-11 09:20:51
3#
Wilson.Zhang 发表于 2024-12-11 08:52
您好!插入行列并不会复制基行基列的样式,这个是SpreadJS的产品设计,将为插入行列设置样式的控制权交给用 ...

好的 我试试
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-12-11 13:40:32
4#
回复 使用道具 举报
头发乱了
注册会员   /  发表于:2024-12-11 14:04:38
5#
Wilson.Zhang 发表于 2024-12-11 08:52
您好!插入行列并不会复制基行基列的样式,这个是SpreadJS的产品设计,将为插入行列设置样式的控制权交给用 ...

activeSheet.bind(
          GC.Spread.Sheets.Events.ColumnChanged,
          function (e, info) {
            if (info.sheetArea === GC.Spread.Sheets.SheetArea.viewport) {
              const count = activeSheet.getRowCount(
                GC.Spread.Sheets.SheetArea.viewport
              );
              const range = activeSheet.getRange(1, info.col, count, 1);
              activeSheet.copyTo(
                range.row,
                range.col,
                range.row,
                info.col - 1,
                range.rowCount,
                1,
                GC.Spread.Sheets.CopyToOptions.style
              );
            }
          }
        );

写的好像不对 copyTo后无法插入列  注释以后可以 可以提供下示例吗
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-12-11 17:10:35
6#
头发乱了 发表于 2024-12-11 14:04
activeSheet.bind(
          GC.Spread.Sheets.Events.ColumnChanged,
          function (e, info)  ...

比如以D列为基列插入列,ColumnChanged监听到的col是插入列的索引,也是插入前的基列索引,count记录了插入的列数。因此,在copyTo()中的起始列索引应该是事件监听信息col+count后的值,即插入列后基列现在的索引,参考如下代码:
  1. sheet.bind(GC.Spread.Sheets.Events.ColumnChanged, function(e, args) {
  2.     console.log('column changed, args: ', args);
  3.     sheet.copyTo(0, args.col + args.count, 0, args.col, sheet.getRowCount(), args.count, GC.Spread.Sheets.CopyToOptions.style);
  4. });
复制代码

上述代码运行效果如下动图所示:
插入新列复制基列样式.gif
回复 使用道具 举报
头发乱了
注册会员   /  发表于:2024-12-11 17:26:44
7#
Wilson.Zhang 发表于 2024-12-11 17:10
比如以D列为基列插入列,ColumnChanged监听到的col是插入列的索引,也是插入前的基列索引,count记录了插 ...

可以 非常感谢
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-12-12 08:40:49
8#

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