VSTO如何向Excel中的单元格写入内容!

7

为什么这个有效:

((Excel.Worksheet)Application.ActiveSheet).get_Range("A1", "A1").Value2 = text;

但是这个不行:
Excel.Worksheet activeSheet = ((Excel.Worksheet)Application.ActiveSheet);
activeSheet.Cells[0, 0] = text;

我需要采用第二种方式,因为我需要使用rowIndex和colIndex进行循环。我该怎么做?
我收到了以下错误信息:
“System.Runtime.InteropServices.COMException”类型的未经处理的异常在mscorlib.dll中发生。其他信息:HRESULT: 0x800A03EC。
1个回答

14

你唯一缺少的(除了使用以1为基准的索引)就是明确将单元格引用转换为范围:

Excel.Worksheet activeSheet = ((Excel.Worksheet)Application.ActiveSheet);
int endRow = 5;
int endCol = 6;

for(int idxRow = 1; idxRow <= endRow; idxRow++)
{
    for(int idxCol = 1; idxCol <= endCol; idxCol)
    {
        ((Excel.Range)activeSheet.Cells[idxRow, idxCol]).Value2 = "Kilroy wuz here";
    }
}

2
+1 我只是想让阅读这篇文章的人知道填充大量单元格值的更快方法是使用 object[,],例如:https://dev59.com/lm865IYBdhLWcg3wZNnT#3847094 - Jeremy Thompson
使用C# 4和“dynamic”关键字,现在可以这样做:dynamic cell = sheet.Cells[1, 1]; cell.Value2 = "hi there"; 更多信息请参见http://msdn.microsoft.com/en-us/magazine/gg598922.aspx - user585968

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接