C# 将公式添加到Excel工作表会导致HRESULT:0x800A03EC

C# 将公式添加到Excel工作表会导致HRESULT:0x800A03EC,c#,excel,excel-formula,C#,Excel,Excel Formula,我在网上搜索了一个合适的解决方案,但没有找到任何有用的 在Excel工作表中,我需要从数据库表中分配一些值,然后在每个值旁边添加一个公式(取决于同一工作簿中的另一个Excel工作表)。添加数据效果很好,但添加公式会导致错误 我正在获取数据并将其添加到工作表中,如下所示: using (SqlConnection conn = new SqlConnection("MyConnectionString")) using (SqlCommand comm = new SqlCommand("SELE

我在网上搜索了一个合适的解决方案,但没有找到任何有用的

在Excel工作表中,我需要从数据库表中分配一些值,然后在每个值旁边添加一个公式(取决于同一工作簿中的另一个Excel工作表)。添加数据效果很好,但添加公式会导致错误

我正在获取数据并将其添加到工作表中,如下所示:

using (SqlConnection conn = new SqlConnection("MyConnectionString"))
using (SqlCommand comm = new SqlCommand("SELECT DISTINCT [MyField] FROM [MyTable]", conn)
{
    conn.Open();
    using (SqlDataReader reader = comm.ExecuteReader())
    {
        myStringList.Add("MyField");
        if (reader.HasRows)
            while (reader.Read())
                myStringList.Add(reader.GetString(reader.GetOrdinal("MyField")));
    }
}

workbook.Worksheets.Add(After: workbook.Worksheets[workbook.Sheets.Count]);

for (int counter = 1; counter <= myStringList.Count(); counter++)
    ((Excel.Worksheet)workbook.ActiveSheet).Cells[counter, 1] = myStringList[counter-1];
numberOfRows
MyOtherWorksheet
中列
B
中的行数(它在调试器中返回正确的数字,因此这不是问题所在)

但当我像这样分配公式时,我得到了以下异常,没有任何有用的消息:

HRESULT:0x800A03EC

我尝试将
.Range[“B”+counter]
更改为
.Cells[counter,2]
,甚至尝试使用
.FormulaR1C1
而不是
.Formula
,但我得到了相同的异常


我遗漏了什么?

我发现了问题所在。我不得不将
.Formula
更改为
.FormulaLocal

:

使用用户语言中的A1样式引用返回或设置对象的公式。读/写变量

:

返回或设置一个变量值,该变量值以A1样式的表示法和宏语言表示对象的公式


numberOfRows>65536吗?@cyboashu不,只有146。谢谢你的回答,就是处理这期“双引号公式C#to excel”的那位。你救了我一天。
for (int counter = 2; counter <= myStringList.Count(); counter++)
    ((Excel.Worksheet)workbook.ActiveSheet).Range["B" + counter].Formula
        = $"=VLOOKUP(A{counter};MyOtherWorksheet!$B$2:$B${numberOfRows};1;FALSE)";