dii*_*___ 3 c# excel excel-formula
我在网上搜索了一个合适的解决方案但找不到任何有用的东西......
在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];
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好.现在我遇到了我的问题.我需要一个配方添加到细胞B2,B3...在列中的每个细胞使用A.困难在于我想用for循环来做,因为公式取决于列A.
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)";
Run Code Online (Sandbox Code Playgroud)
numberOfRows是列B中的行数MyOtherWorksheet(它在调试器中返回正确的数字,所以这不是问题).
但是,当我分配这样的公式时,我得到以下异常,没有任何有用的消息:
HRESULT:0x800A03EC
我尝试.Range["B" + counter]改为.Cells[counter, 2]甚至尝试使用.FormulaR1C1而不是.Formula但我得到了同样的例外.
我错过了什么?
我发现了这个问题.我不得不换.Formula到.FormulaLocal.
使用用户语言的A1样式引用返回或设置对象的公式.读/写Variant.
返回或设置Variant值,该值表示A1样式表示法和宏语言中的对象公式.
| 归档时间: |
|
| 查看次数: |
598 次 |
| 最近记录: |