nutstore 发表于 2023-8-3 09:38:53

GcExcel5.25 TEXT公式计算结果和Spreadjs不一致[DOCXLS-8653][SJS-19562]

本帖最后由 Joestar.Xu 于 2023-8-4 11:41 编辑

公式 =TEXT(3,"_ * #,##0.00_ ;_ * \-#,##0.00_")


在spreadjs 计算结果是3.00

但在GcExcel计算出的是 Value?



nutstore 发表于 2023-8-3 09:39:31

如图

Joestar.Xu 发表于 2023-8-3 10:00:35

您好,问题已重现,这边调研一下,后续有进展我会在本贴中回复您。

本帖先做保留处理了。

Joestar.Xu 发表于 2023-8-4 12:01:40

您好,请使用这个公式:=TEXT(3,"_ * #,##0.00_ ;_ * \-#,##0.00")



之前的公式在Excel中也会报错,但是在SpreadJS中没有报错,这个问题我们接下来还需要调研一下。

Joestar.Xu 发表于 2023-8-4 17:13:47

另外,您为什么要为单元格设置:“_ * #,##0.00_ ;_ * \-#,##0.00_”这样的格式呢?是为了解决什么样的问题呢?

nutstore 发表于 2023-8-4 20:20:56

Joestar.Xu 发表于 2023-8-4 17:13
另外,您为什么要为单元格设置:“_ * #,##0.00_ ;_ * \-#,##0.00_”这样的格式呢?是为了解决什么样的问题 ...

客户那边的公式, 我们同时使用了spreadjs和gcexcel, 但在spreadjs上正常, gcexcel不正常,就造成了使用问题。

Joestar.Xu 发表于 2023-8-7 10:47:50

nutstore 发表于 2023-8-4 20:20
客户那边的公式, 我们同时使用了spreadjs和gcexcel, 但在spreadjs上正常, gcexcel不正常,就造成了使 ...

:loap1:明白了,我们这边再调研一下,后续有进展我会在本帖回复您。

Joestar.Xu 发表于 2023-8-11 17:45:58

您好,请参考以下临时解决方案:

var oldInit = GC.Spread.Formatter.GeneralFormatter.prototype.init;
GC.Spread.Formatter.GeneralFormatter.prototype.init = function () {
    oldInit.apply(this, arguments);
    var formatter = this.formatString();
    var result = [], _count = 0, start = 0, len = formatter.length;
    for (var i = 0; i < len; i++) {
      if (formatter === '_') {
            _count++;
      }
      else {
            if (formatter === ';' && (_count === 0 || _count % 2 === 0)) {
                result.push(formatter.substring(start, i));
                start = i + 1;
            }
            _count = 0;
      }
    }
    if (start <= len) {
      result.push(formatter.substring(start, len));
    }
    result.forEach(function (item) {
      if (item === "_") {
            throw new Error("Format pattern is invalid");
      }
    })
}

nutstore 发表于 2023-8-15 10:44:16

Joestar.Xu 发表于 2023-8-11 17:45
您好,请参考以下临时解决方案:

var oldInit = GC.Spread.Formatter.GeneralFormatter.prototype.init; ...

。。。。这个不是GcExcel的问题么, 这个修复是让spreadjs计算挂掉么?

Joestar.Xu 发表于 2023-8-15 11:27:32

实际上,我们的SpreadJS与GCExcel都是与Excel保持一致的,在这个问题上SpreadJS的表现与Excel并不一致,而GCExcel的表现是与Excel一致的,因此问题出在了SpreadJS上,以上解决方案是将SpreadJS在这个问题的显示上与Excel保持一致。
页: [1]
查看完整版本: GcExcel5.25 TEXT公式计算结果和Spreadjs不一致[DOCXLS-8653][SJS-19562]