找回密码
 立即注册

QQ登录

只需一步,快速开始

Dtttax

银牌会员

265

主题

663

帖子

2116

积分

银牌会员

积分
2116
Dtttax
银牌会员   /  发表于:2023-12-8 17:14  /   查看:4209  /  回复:13
1金币
本帖最后由 Ellia.Duan 于 2024-1-8 16:31 编辑


产品:SpreadJS
版本:V14.2.3
问题编号:SJS-22239

我们自定义快捷键实现了类似于excel的ctrl+enter的功能,选择一块区域,在公示栏输入值,按CTRL+enter可以把选择的区域都设置为相同的值;但是在单元格编辑的时候,Ctrl+enter是在单元格内换行,没有调用到自定义快捷键的方法,这里是不是有快捷键冲突?

13 个回复

正序浏览
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-1-12 16:01:00
13#
Dtttax 发表于 2024-1-12 15:56
可否将快捷键改为CTRL+ENTER,因为用户在excel上的习惯是这样

如果一定要和Excel保持一致,我将继续调研此问题。
回复 使用道具 举报
Dtttax
银牌会员   /  发表于:2024-1-12 15:56:19
12#
Ellia.Duan 发表于 2024-1-10 14:53
您好,楼上给出的designer地址是想让您体验一下此功能。我在此楼中上传了v14的demo 。
可以发现,选中一片 ...

可否将快捷键改为CTRL+ENTER,因为用户在excel上的习惯是这样
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-1-10 14:53:49
11#
您好,楼上给出的designer地址是想让您体验一下此功能。我在此楼中上传了v14的demo 。
可以发现,选中一片区域,CTRL+shift+enter是可以想实现您的需求的,并没有换行。
以及您现在的问题是什么呢?

v14.html

1.02 KB, 下载次数: 273

回复 使用道具 举报
Dtttax
银牌会员   /  发表于:2024-1-10 14:34:16
10#
本帖最后由 Dtttax 于 2024-1-10 17:42 编辑
Ellia.Duan 发表于 2024-1-10 09:38
您好,经调研,您可以通过ctrl+shift+enter实现与Excel一致的功能,不需要重写相逻辑。
如在designer中,h ...

没有买设计器,这个功能实现也不复杂,只是在编辑的时候按CTRL+enter是不会调用到自定义快捷键代码的,只会在编辑的单元格加换行,在公式栏输入的时候是可以正常调用的。用户在excel的习惯是CTRL+enter,改快捷键对推广不利
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-1-10 09:38:47
9#
您好,经调研,您可以通过ctrl+shift+enter实现与Excel一致的功能,不需要重写相逻辑。
如在designer中,https://demo.grapecity.com.cn/SpreadJS/WebDesigner/index.html
您可以选中一片区域,输入内容,然后按下ctrl+shift+enter,可以实现您想要的效果,如下动图所示:

ctrl+shift+enter.gif
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-1-8 16:24:48
8#
您好,在Excel中,选中一片区域,然后输入数值1,按下快捷键ctrl+enter ,
此时此片区域的值都是1 ,如下动图所示

在SpreadJS中,设置了如下代码
  1. var sheet = spread.getActiveSheet();
  2.         let command = {
  3.             canUndo: true,
  4.             execute: function (context, options, isUndo) {
  5.                 let Commands = GC.Spread.Sheets.Commands;
  6.                 options.cmd = "copyALl";
  7.                 if (isUndo) {
  8.                     Commands.undoTransaction(context, options);
  9.                     return true;
  10.                 } else {
  11.                     Commands.startTransaction(context, options);
  12.                     console.log(sheet.isEditing())
  13.                     if (sheet.isEditing()) {
  14.                         sheet.endEdit()
  15.                         let value = sheet.getCell(sheet.getActiveRowIndex(), sheet.getActiveColumnIndex()).value()
  16.                         let rangeList = sheet.getSelections()
  17.                         for (let i = 0; i < rangeList.length; i++) {
  18.                             let range = rangeList[i]
  19.                             let {row, col, rowCount, colCount} = range;
  20.                             if (sheet.getRowVisible(row) && sheet.getColumnVisible(col)) {
  21.                                 sheet.getRange(row, col, rowCount, colCount).value(value)
  22.                             }
  23.                         }

  24.                     }
  25.                 }
  26.             },
  27.         };
  28.         let commandManager = spread.commandManager();
  29.         commandManager.register("copyALl", command);

  30.         spread.commandManager().setShortcutKey("copyALl", GC.Spread.Commands.Key.enter, true, false, false, false);
复制代码


打开附件中的html,
在公式编辑器中输入数值1,然后按下快捷键ctrl+enter ,其效果与Excel一致
在单元格中直接输入数值1,此时按下快捷键ctrl+enter,会发现单元格换行
所以复现了您的问题,我们将深入调研下此问题,问题编号:SJS-22239

ctrl+enter_spreadJS.gif
ctrl+enter_excel.gif

ctrl+enter.html

2.58 KB, 下载次数: 334

回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-1-5 14:00:46
7#
您好,您的问题已收到,我们将调研下问题。
回复 使用道具 举报
Dtttax
银牌会员   /  发表于:2024-1-5 09:22:50
6#
Ellia.Duan 发表于 2024-1-3 17:27
您好,是否可以贴出您实现的CTRL+enter快捷键相关代码,我们在此基础上调研如何实现您的需求。

  if(sheet.isEditing()){
    sheet.endEdit()
    let value = sheet.getCell(sheet.getActiveRowIndex(),sheet.getActiveColumnIndex()).value()
    sheet.getSelections().forEach(({row,col,rowCount,colCount}) => {
      for(let cell of sheet[Symbol.iterator](row, rowCount, col, colCount)){
        if(sheet.getRowVisible(cell.row)&&sheet.getColumnVisible(cell.col)){
          cell.value(value)
        }
      }
    })
  }
回复 使用道具 举报
Ellia.DuanSpreadJS 开发认证
超级版主   /  发表于:2024-1-3 17:27:26
5#
您好,是否可以贴出您实现的CTRL+enter快捷键相关代码,我们在此基础上调研如何实现您的需求。
回复 使用道具 举报
Dtttax
银牌会员   /  发表于:2024-1-3 14:22:33
4#
Ellia.Duan 发表于 2023-12-28 17:23
您好,您的问题解决了吗?如果没有解决,建议如楼上所言,详细描述下您的需求?

选择一块区域,键盘输入值,然后CTRL+enter,在excel上这么操作会把选中的区域都填上刚刚输入的值,但是在spreadjs操作,就是换行,我们自己实现了CTRL+enter快捷键,发现并不会进这个自定义方法,在公式兰可以
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部