【发布时间】:2017-02-17 12:11:30
【问题描述】:
我正在使用Aspose.Cells .NET,我正在尝试在条件格式表达式中使用数组公式(Ctrl+Shift+Enter 或 CSE)。数组公式如下:
=VALUE
(INDEX('Raw data'!$A$5:$AE$32;
MATCH(1;(A5='Raw data'!$A$5:$A$32)*(B5='Raw data'!$B$5:$B$32);0);
3)
)
<> VALUE(C5)
(为方便起见,换行和空格。实际公式中不存在)
基本上它做了以下事情:
- 通过两列
A5='Raw data'Column A ANDB5 = 'Raw data'Column B 在另一个工作表(原始数据)中查找一行 - 获取找到的行中的第 3 列
- 检查其值是否不等于 C5 单元格
当我将它直接放入单元格时它可以工作(使用 Ctrl+Shift+Enter) 当我使用 Ms Excel 2010 手动创建条件格式(使用它)时,它也可以工作。
但是当我尝试通过 Aspose.Cells 应用它时,它会抛出异常
公式无效
// Add an empty conditional formatting
int index = worksheet.ConditionalFormattings.Add();
FormatConditionCollection fcs = ws.ConditionalFormattings[index];
//Add area for conditional formatting
fcs.AddArea(cellArea);
var condition = String.Format(formulaTemplate, initialDataRange, okpoCellName, initialDataOkpoColumnRange, initialDataColumn, currentCellName);
// Throws here
// condition = "=VALUE(INDEX('Raw data'!$A$5:$AE$32;MATCH(1;(A5='Raw data'!$A$5:$A$32)*(B5='Raw data'!$B$5:$B$32);0);3)) <> VALUE(C5)"
int conditionIndex = fcs.AddCondition(FormatConditionType.Expression, OperatorType.None, condition, "");
我怀疑当我添加条件时,Aspose 会尝试像通常的公式(而不是数组公式)一样对其进行评估并且失败。有什么方法可以禁用/推迟此评估? 这是 Aspose 中的错误,还是我做错了什么?
【问题讨论】:
标签: c# excel excel-formula conditional-formatting aspose