【发布时间】:2019-06-12 20:21:28
【问题描述】:
我正在使用 Openxml 生成电子表格。
我有各种带有 COUNTIFS 公式的 Excel 单元格,当我使用 C# 生成 Excel 电子表格时,这些公式没有得到计算,但公式本身没有问题 - Excel 没有将我的字符串识别为公式。我知道这一点的原因是,如果我选择单元格并在公式字段上按 Enter,它会计算值。
我的 COUNTIFS 所做的只是计算单元格间隔上是否存在“复选标记”并且它是否与字符串匹配并给出百分比作为结果。公式的一个例子是这样的:
=COUNTIFS(C9:C10,B16,D9:D10,"✓")/D12
但是,我无法从我的代码中发送双引号,这会导致公式出错,所以我的解决方案是使用 Excel 的 UNICHAR 函数。我生成的公式是这样的:
=COUNTIFS(C9:C10,B15,D9:D10, UNICHAR(10003))/D12
由于某种原因,Excel 不会自动计算公式,即使它没有任何问题。
我有一个类似的公式,它只处理值大于零的单元格。
=COUNTIFS(C9:C22,B35, D9:D22, 连接(CHAR(62), CHAR(48)))/COUNTIF(D9:D22, 连接(CHAR(62), CHAR(48)))
同样,该公式遵循我无法发送双引号的相同问题,但字符 62 和 48 分别 >0。这工作正常。 Excel 会计算出来。
现在,如果我将数据输入更改为在单元格上放置“v”而不是复选标记并执行
=COUNTIFS(C9:C10,B15,D9:D10, CHAR(118))/D12
公式有效。这告诉我问题在于 UNICHAR,由于某种原因,使用此函数会使 excel 无法自动计算它。
有没有人经历过这样的事情?
从代码的角度来看,我已经尝试过
spreadSheetDocument.WorkbookPart.Workbook.CalculationProperties = new CalculationProperties()
{
ForceFullCalculation = true,
FullCalculationOnLoad = true
};
spreadSheetDocument.WorkbookPart.Workbook.Save();
没有成功。
有点难过,任何帮助将不胜感激。
【问题讨论】:
标签: c# excel openxml-sdk