【问题标题】:C# - Set excel cell with a formula containing double quotesC# - 使用包含双引号的公式设置 excel 单元格
【发布时间】:2014-08-13 16:07:10
【问题描述】:

我正在尝试通过 c# 代码设置 Excel 单元格的公式。 我使用 Microsoft.Office.Interop.Excel,版本 14。 我总是收到一个 excel 错误 0x800A03EC,这是一种通用错误。

String formula = "=IF(A2=\"BLANCO\";\"\";C1+1)"    

Range cell = (Microsoft.Office.Interop.Excel.Range)ws.Cells[2, 3];
cell.Formula = formula;

我还尝试用@转义双引号

String formula = @"=IF(A2=""BLANCO"";"""";C1+1)"

同样的错误,同样的问题。

当我尝试设置一个不涉及引号的简单公式时,它工作正常。

有人有解决办法吗?

【问题讨论】:

  • 公式不应该是@"=IF(A2=""BLANCO"","""",C1+1)"(逗号不是分号)吗?
  • D Stanley 是对的,公式中不要使用逗号;
  • 这个解决方案解决了我的代码问题:stackoverflow.com/a/41951868/649825

标签: c# excel excel-formula double-quotes


【解决方案1】:

您的代码没有太多上下文,但如果使用得当,斜线应该可以工作。我不确定这里使用分号。

此代码是直接从我的一个互操作程序中提取的示例,并且运行良好: thisExcel.xlWorksheet.Range["AD44", Type.Missing].Value = "=IF(BULK!L7=\"#N/A Field Not Applicable\",\"( \"&'Title Look Up'!C3&\" )\",\"( \"&'Title Look Up'!C3&\" )\")";

如果你想要的是:'如果 a2 读取 blanco 则没有其他任何东西将 c1 的值增加 1',那么你只需要: =IF(A2=\"BLANCO\",\"\",C1+1)

我也会尝试使用 .Value 而不是 .Formula。

希望有所帮助

【讨论】:

    【解决方案2】:

    基于@getglad 的回答 - 使用斜线确实适用于双引号。

    我最近的解决方案(截至 2020 年):

    worksheet.Cells[row,col].Value = "=IFERROR(VLOOKUP(etc),\"\")";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多