【问题标题】:Excel IF statement results in error: Exception from HRESULT: 0x800A03ECExcel IF 语句导致错误:HRESULT 异常:0x800A03EC
【发布时间】:2017-10-24 14:15:16
【问题描述】:

我正在用 C# 创建一个 Excel 报表。当我添加如下公式时,一切正常:

totalCellFormulaRange.Formula = "=SUM(AH7:AS7)"; //totalCellFormulaRange is a Range object from Microsoft.Office.Interop.Excel

但是现在当我尝试添加一个由如下 if 语句组成的公式时,

memberGuidesCellFormaulaRange.Formula = "=IF(LEFT(D7;12)=\"Welcome Pack\";O7*$AQ$4;0)";

然后我得到这个错误:

HRESULT 异常:0x800A03EC

如果在 Excel 表格中输入,上述 if 语句 100% 有效。它仅在 C# 中失败,并且在遇到这行代码时会立即引发异常。

【问题讨论】:

  • 您似乎在 IF 中使用分号而不是逗号
  • @BugFinder 区域设置迫使我们中的一些人这样做,因为逗号是您的小数分隔符。
  • @BugFinder 我这边的 it 语句的 Excel 语法是“=IF(logical_test;value_if_true;value_if_false)”
  • 使用 @"=IF(LEFT(D7;12)=""Welcome Pack"";O7*$AQ$4;0)" 会更好吗 - 失败了,你做了很多excel设置一次?
  • 尝试将 excel 应用的计算设置为手动

标签: c# excel excel-interop hresult


【解决方案1】:

虽然 excel 的本地化允许使用“;”用于代替逗号,COM 接口不注册“;”应该使用逗号代替。

memberGuidesCellFormaulaRange.Formula = "=IF(LEFT(D7,12)=\"Welcome Pack\",O7*$AQ$4,0)";

有关本地化问题的更多信息,以及为 Excel 编写互操作代码时的一些一般指示,see this SO Q&A

【讨论】:

  • 我删除了分号并改用逗号,现在可以使用了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-12
  • 1970-01-01
  • 2011-03-02
  • 2013-05-05
  • 1970-01-01
相关资源
最近更新 更多