找回密码
 立即注册

QQ登录

只需一步,快速开始

Joestar.Xu SpreadJS 开发认证
超级版主   /  发表于:2024-4-7 15:48  /   查看:169  /  回复:0
在使用SpreadJS的过程中我们会需要再某一行的样式的基础上再插入一样的一行,但是直接插入并不会保留样式,这样的需求应该如何实现呢?


只需要重写一下插入行的命令即可实现,参考以下代码:

  1. window.onload = function () {
  2.   let designerConfig = JSON.parse(
  3.     JSON.stringify(GC.Spread.Sheets.Designer.DefaultConfig)
  4.   );

  5.   let designer = new GC.Spread.Sheets.Designer.Designer(
  6.     "gc-designer-container",
  7.     designerConfig
  8.   );

  9.   let spread = designer.getWorkbook();

  10.   let sheet = spread.getActiveSheet();

  11.   let insertRowsCopyStyle = {
  12.     canUndo: true,
  13.     name: "insertRowsCopyStyle",
  14.     execute: function (context, options, isUndo) {
  15.       var Commands = GC.Spread.Sheets.Commands;
  16.       if (isUndo) {
  17.         Commands.undoTransaction(context, options);
  18.         return true;
  19.       } else {
  20.         Commands.startTransaction(context, options);
  21.         let sheet = context.getSheetFromName(options.sheetName);

  22.         options.cmd = "gc.spread.contextMenu.insertRows";
  23.         context.commandManager().execute(options);

  24.         options.cmd = "insertRowsCopyStyle";
  25.         sheet.copyTo(
  26.           sheet.getActiveRowIndex() + 1,
  27.           0,
  28.           sheet.getActiveRowIndex(),
  29.           0,
  30.           1,
  31.           sheet.getColumnCount(),
  32.           GC.Spread.Sheets.CopyToOptions.style,
  33.         )
  34.         Commands.endTransaction(context, options);
  35.         return true;
  36.       }
  37.     },
  38.   };

  39.   spread.commandManager().register("insertRowsCopyStyle", insertRowsCopyStyle);

  40.   let oldOpenMenu = spread.contextMenu.onOpenMenu;
  41.   spread.contextMenu.onOpenMenu = function (
  42.     menuData,
  43.     itemsDataForShown,
  44.     hitInfo,
  45.     spread
  46.   ) {
  47.     oldOpenMenu.apply(this, arguments);

  48.     itemsDataForShown.forEach(function (item, index) {
  49.       if (item && item.name === "gc.spread.contextMenu.insertRows") {
  50.         item.command = "insertRowsCopyStyle";
  51.       }
  52.     });
  53.   };
  54. };
复制代码

SpreadJS 17.0.8 | GcExcel 7.1.0 已发布~

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部