找回密码
 立即注册

QQ登录

只需一步,快速开始

闲人

注册会员

9

主题

32

帖子

99

积分

注册会员

积分
99
闲人
注册会员   /  发表于:2021-4-8 16:14  /   查看:2994  /  回复:5
// 自定义单元格格式化函数
function CustomCellFormat(format, cultureName) {
  GC.Spread.Formatter.FormatterBase.apply(this, arguments);
  this.typeName = "CustomCellFormat";
}
CustomCellFormat.prototype = new GC.Spread.Formatter.FormatterBase();
CustomCellFormat.format = function (obj, formattedData) {
  console.log('CustomCellFormat format', obj, formattedData);
  return obj;
}
CustomCellFormat.prototype.parse = function (str) {
  console.log('CustomCellFormat parse', str);
  return new GC.Spread.Formatter.GeneralFormatter().parse(str);
};let oldFun = GC.Spread.Sheets.getTypeFromString;
// Private types can not be accessed from window, so override getTypeFromString method.
GC.Spread.Sheets.getTypeFromString = function (typeString) {
  switch (typeString) {
    case "CustomCellFormat":
      return CustomCellFormat;
    default:
      return oldFun.apply(this, arguments);
  }
};// 使用 没有一种写法是响应的?//this.sheet.getRange(this.range.row, this.range.col, this.range.rowCount, this.range.colCount).formatter(new CustomCellFormat())
// this.sheet.getCell(3, 2).formatter(new CustomCellFormat())
// this.sheet.setFormatter(3, 2, new CustomCellFormat());
// this.sheet.addCustomFunction(new CustomCellFormat());

5 个回复

倒序浏览
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-4-8 16:36:21
沙发
您好,您可以参考这个自定义函数的demo,添加name,通过setFormula去给单元格添加自定义函数$(document).ready(function () {
    var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"), { sheetCount: 1 });
    initSpread(spread);
});
function initSpread(spread) {
    var sheet = spread.getSheet(0);

    sheet.setColumnWidth(1, 225);
    sheet.setColumnWidth(2, 100);
    function FactorialFunction() {
        this.name = "ROUND";
        this.maxArgs = 1;
        this.minArgs = 1;
    }
    FactorialFunction.prototype = new GC.Spread.CalcEngine.Functions.Function();
    FactorialFunction.prototype.evaluate = function (arg) {
        var result = 1;
        if (arguments.length === 1 && !isNaN(parseInt(arg))) {
            var res = arg%10;
            if(res < 5){
                return arg - res;
            }else{
                return arg + 10 - res;
            }
            return result;
        }
        return "#VALUE!";
    };
    var factorial = new FactorialFunction();

        sheet.setValue(3, 1, 'Formula');
        sheet.setValue(3, 2, '=ROUND(5)');
        sheet.setValue(4, 1, 'Result');
        sheet.addCustomFunction(factorial);
        sheet.setFormula(4, 2, "=ROUND(5)");

};


回复 使用道具 举报
闲人
注册会员   /  发表于:2021-4-8 17:33:05
板凳
DerrickJiao 发表于 2021-4-8 16:36
您好,您可以参考这个自定义函数的demo,添加name,通过setFormula去给单元格添加自定义函数$(document).re ...

还是没用。
Unhandled Rejection (Error): 无效自定义函数
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-4-8 17:59:34
地板
闲人 发表于 2021-4-8 17:33
还是没用。
Unhandled Rejection (Error): 无效自定义函数

麻烦您在此demo上复现您的问题,并详细描述您的需求。
如果是设置单元格格式的话可以直接用setFormatter即可。

https://demo.grapecity.com.cn/sp ... ic-formatter/purejs

SpreadDemo - 普通.zip

2.1 MB, 下载次数: 239

回复 使用道具 举报
闲人
注册会员   /  发表于:2021-4-9 13:37:20
5#
DerrickJiao 发表于 2021-4-8 17:59
麻烦您在此demo上复现您的问题,并详细描述您的需求。
如果是设置单元格格式的话可以直接用setFormatter ...

可以了,是代码错了一行  CustomCellFormat.format-》CustomCellFormat.prototype.format
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-4-9 13:45:04
6#
闲人 发表于 2021-4-9 13:37
可以了,是代码错了一行  CustomCellFormat.format-》CustomCellFormat.prototype.format

解决了就好,有新问题欢迎开新帖交流~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部