找回密码
 立即注册

QQ登录

只需一步,快速开始

王祖贤-本人

注册会员

8

主题

18

帖子

54

积分

注册会员

积分
54
王祖贤-本人
注册会员   /  发表于:2023-8-3 16:38  /   查看:600  /  回复:3
官方demo, 对数据验证的单元格点击清除格式按钮,会清除掉数据验证,怎么保证清除格式只清除样式、数据格式、不清楚数据验证

3 个回复

倒序浏览
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-8-3 17:33:28
沙发
您好,Designer中的清除格式是会清除该单元格除了值以外的任何格式,包括数据验证。

因此如果不想让数据验证被清除的同时又想只清除样式和数据格式,那么只能通过自定义命令的方式来实现。
SpreadJS 17.0.8 | GcExcel 7.1.0 已发布~
回复 使用道具 举报
王祖贤-本人
注册会员   /  发表于:2023-8-4 14:59:00
板凳
如何通过自定义命令的方式来实现呢?有api使用方法么?
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2023-8-4 17:31:05
地板
我做了一个简单的Demo,你可以参考一下:

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

  console.log(designerConfig);

  designerConfig.commandMap = {
    MyClear: {
      text: "MyClear",
      commandName: "MyClear",
      iconClass: "none",
      execute: async (context, propertyName, fontItalicChecked) => {
        console.log("clear");

        let spread = context.getWorkbook();
        let sheet = spread.getActiveSheet();
        let selections = sheet.getSelections();
        let range = sheet.getRange(
          selections[0].row,
          selections[0].col,
          selections[0].rowCount,
          selections[0].colCount
        );
        range.setStyle(new GC.Spread.Sheets.Style());
        range.formatter(null);
      },
    },
  };

  designerConfig.ribbon[0].buttonGroups[7].commandGroup.children[0].children[2].children.push(
    "MyClear"
  );

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

  let spread = designer.getWorkbook();

  let sheet = spread.getActiveSheet();

  sheet.getCell(0, 0).value("Hello World");
};

效果如下:

161435co47zhcx4oz84vm0.png871446227.png
SpreadJS 17.0.8 | GcExcel 7.1.0 已发布~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部