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?
如图
您好,问题已重现,这边调研一下,后续有进展我会在本贴中回复您。
本帖先做保留处理了。 您好,请使用这个公式:=TEXT(3,"_ * #,##0.00_ ;_ * \-#,##0.00")
之前的公式在Excel中也会报错,但是在SpreadJS中没有报错,这个问题我们接下来还需要调研一下。 另外,您为什么要为单元格设置:“_ * #,##0.00_ ;_ * \-#,##0.00_”这样的格式呢?是为了解决什么样的问题呢? Joestar.Xu 发表于 2023-8-4 17:13
另外,您为什么要为单元格设置:“_ * #,##0.00_ ;_ * \-#,##0.00_”这样的格式呢?是为了解决什么样的问题 ...
客户那边的公式, 我们同时使用了spreadjs和gcexcel, 但在spreadjs上正常, gcexcel不正常,就造成了使用问题。 nutstore 发表于 2023-8-4 20:20
客户那边的公式, 我们同时使用了spreadjs和gcexcel, 但在spreadjs上正常, gcexcel不正常,就造成了使 ...
:loap1:明白了,我们这边再调研一下,后续有进展我会在本帖回复您。 您好,请参考以下临时解决方案:
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");
}
})
} Joestar.Xu 发表于 2023-8-11 17:45
您好,请参考以下临时解决方案:
var oldInit = GC.Spread.Formatter.GeneralFormatter.prototype.init; ...
。。。。这个不是GcExcel的问题么, 这个修复是让spreadjs计算挂掉么? 实际上,我们的SpreadJS与GCExcel都是与Excel保持一致的,在这个问题上SpreadJS的表现与Excel并不一致,而GCExcel的表现是与Excel一致的,因此问题出在了SpreadJS上,以上解决方案是将SpreadJS在这个问题的显示上与Excel保持一致。
页:
[1]