请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

表格6666
金牌服务用户   /  发表于:2023-11-21 11:56  /   查看:48  /  回复:1
image.png898365478.png
  1. <!DOCTYPE html>
  2. <html lang="zh">

  3. <head>
  4.     <meta charset="utf-8" />
  5.     <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  6.     <meta name="spreadjs culture" content="zh-cn" />
  7.     <title>SpreadJS Designer</title>
  8.     <link
  9.         href="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets/styles/gc.spread.sheets.excel2013white.css"
  10.         rel="stylesheet" type="text/css" />
  11.     <link
  12.         href="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets-designer/styles/gc.spread.sheets.designer.min.css"
  13.         rel="stylesheet" type="text/css">

  14.     <style>
  15.         .sample-tutorial {
  16.      position: relative;
  17.      height: 100%;
  18.      overflow: hidden;
  19. }

  20. .sample-spreadsheets {
  21.     width: calc(100% - 280px);
  22.     height: 100%;
  23.     overflow: hidden;
  24.     float: left;
  25. }

  26. .options-container {
  27.     float: right;
  28.     width: 280px;
  29.     padding: 12px;
  30.     height: 100%;
  31.     box-sizing: border-box;
  32.     background: #fbfbfb;
  33.     overflow: auto;
  34. }

  35. .option-row {
  36.     font-size: 14px;
  37.     padding: 5px;
  38. }

  39. label {
  40.     display: block;
  41.     margin-bottom: 6px;
  42. }

  43. input[type=button] {
  44.     margin-top: 6px;
  45.     display: block;
  46. }
  47. body {
  48.     position: absolute;
  49.     top: 0;
  50.     bottom: 0;
  51.     left: 0;
  52.     right: 0;
  53. }
  54.     </style>
  55. </head>

  56. <body unselectable="on">
  57.     <div id="gc-designer-container" role="application"></div>
  58.     <div class="sample-tutorial">
  59.         <div id="ss" class="sample-spreadsheets"></div>
  60.         <div class="options-container">
  61.                 <label >Please select a range and click 'Set BackColor' button will set backColor for the range, and click 'Undo' button and 'Redo' button will undo and redo the set backColor action.</label>
  62.             <div class="option-row">
  63.                 <input type="button" id="setBackColor" value="Set BackColor" />
  64.             </div>
  65.             <div class="option-row">
  66.                 <input type="button" id="undo" value="Undo" />
  67.             </div>
  68.             <div class="option-row">
  69.                 <input type="button" id="redo" value="Redo" />
  70.             </div>
  71.             <hr>
  72.             <div class="option-row">
  73.                 <label >Use the keyboard shortcuts 'Ctrl-Z' to undo the custom action, and use the keyBoard shortcuts 'Ctrl-Y' to redo the custom action.</label>
  74.             </div>
  75.         </div>
  76.     </div>
  77.     <script type="text/javascript"
  78.         src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets/dist/gc.spread.sheets.all.min.js"></script>
  79.     <script
  80.         src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets-charts/dist/gc.spread.sheets.charts.min.js"></script>
  81.     <script
  82.         src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets-shapes/dist/gc.spread.sheets.shapes.min.js"></script>
  83.     <script
  84.         src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets-slicers/dist/gc.spread.sheets.slicers.min.js"></script>
  85.     <script
  86.         src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets-print/dist/gc.spread.sheets.print.min.js"></script>
  87.     <script
  88.         src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets-barcode/dist/gc.spread.sheets.barcode.min.js"></script>
  89.     <script
  90.         src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets-pdf/dist/gc.spread.sheets.pdf.min.js"></script>
  91.     <script
  92.         src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets-pivot-addon/dist/gc.spread.pivot.pivottables.min.js"></script>
  93.     <script
  94.         src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets-tablesheet/dist/gc.spread.sheets.tablesheet.min.js"></script>
  95.     <script
  96.         src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets-ganttsheet/dist/gc.spread.sheets.ganttsheet.min.js"></script>
  97.     <script
  98.         src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets-formula-panel/dist/gc.spread.sheets.formulapanel.min.js"></script>
  99.     <script
  100.         src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-excelio/dist/gc.spread.excelio.min.js"></script>
  101.     <script
  102.         src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets-io/dist/gc.spread.sheets.io.min.js"></script>
  103.     <script
  104.         src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets-resources-zh/dist/gc.spread.sheets.resources.zh.min.js"></script>

  105.     <script
  106.         src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets-designer-resources-cn/dist/gc.spread.sheets.designer.resource.cn.min.js"></script>
  107.     <script
  108.         src="https://cdn.grapecity.com.cn/SpreadJS/package-contents/16.2.2/spread-sheets-designer/dist/gc.spread.sheets.designer.all.min.js"></script>
  109.     <script type="text/javascript">
  110.         window.onload = function () {
  111.             const customConfig = GC.Spread.Sheets.Designer.DefaultConfig;
  112.             let undoList = GC.Spread.Sheets.Designer.getCommand(GC.Spread.Sheets.Designer.CommandNames.UndoList);
  113.             let redoList = GC.Spread.Sheets.Designer.getCommand(GC.Spread.Sheets.Designer.CommandNames.RedoList);
  114.             redoList.commandMap['changeBackColor'] = '哈哈哈哈哈哈';
  115.             undoList.commandMap['changeBackColor'] = '哈哈哈哈哈哈';

  116.             var designer = new GC.Spread.Sheets.Designer.Designer(document.getElementById("ss"));
  117.             var spread = designer.getWorkbook();
  118.             var undoManager = spread.undoManager();
  119.             _getElementById('undo').addEventListener('click', function () {
  120.                 undoManager.undo();
  121.             });

  122.             _getElementById('redo').addEventListener('click', function () {
  123.                 undoManager.redo();
  124.             });

  125.             _getElementById('setBackColor').addEventListener('click', function () {
  126.                 initSpread(spread);
  127.             });
  128.         };

  129.         function initSpread(spread) {
  130.             var sheet = spread.getActiveSheet();
  131.             var command = {
  132.                 canUndo: true,
  133.                 execute: function (spread, options, isUndo) {
  134.                     var Commands = GC.Spread.Sheets.Commands;
  135.                     if (isUndo) {
  136.                         Commands.undoTransaction(spread, options);
  137.                         return true;
  138.                     } else {
  139.                         Commands.startTransaction(spread, options);
  140.                         spread.suspendPaint();
  141.                         var selections = options.selections;
  142.                         var value = options.backColor;
  143.                         selections.forEach(function (sel) {
  144.                             sheet.getRange(sel.row, sel.col, sel.rowCount, sel.colCount).backColor(value);
  145.                         });
  146.                         spread.resumePaint();
  147.                         Commands.endTransaction(spread, options);
  148.                         return true;
  149.                     }
  150.                 }
  151.             };
  152.             var selections = sheet.getSelections();
  153.             var commandManager = spread.commandManager();
  154.             commandManager.register('changeBackColor', command);
  155.             commandManager.execute({
  156.                 cmd: 'changeBackColor',
  157.                 sheetName: spread.getSheet(0).name(),
  158.                 selections: selections,
  159.                 backColor: 'rgb(130, 188, 0)'
  160.             });
  161.         }

  162.         function _getElementById(id) {
  163.             return document.getElementById(id);
  164.         }
  165.     </script>
  166. </body>

  167. </html>
复制代码



1 个回复

倒序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-11-21 15:07:04
沙发
您好,需要再加上这三行代码才可以:

customConfig.commandMap = {};
customConfig.commandMap[GC.Spread.Sheets.Designer.CommandNames.UndoList] = undoList;
customConfig.commandMap[GC.Spread.Sheets.Designer.CommandNames.RedoList] = redoList;

image.png59518126.png

image.png476268004.png
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部