为什么这样做:
((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
答案 0 :(得分:11)
您唯一缺少的是(除了使用基于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";
}
}