引用 Excel 工作表中单元格的“最低”适用索引是 [1,1],它对应于 A 列,单元格 1。我看到你试图引用 0,0,它超出了桌子。
尽管 C# 通常使用从零开始的表索引,但 Excel Interop 的程序员似乎遵循了不同的方法。那或者他们想要保持他们的约定统一,因为 Excel 表中的第一行以 1 开头,而不是 0。我不是 Excel 爱好者,但这是我最好的猜测。
编辑:根据 Siddharth 的请求,这是一个将 DataGridView 控件的内容复制到 Excel 工作表的示例。请注意,这只是演示基本功能,并不是完整的示例或最佳实践:
#using Microsoft.Office.Interop;
Excel.Application xlApp;
Excel.Workbook xlWorkBook;
Excel.Worksheet xlWorkSheet;
xlApp = new Excel.ApplicationClass();
xlWorkBook = xlApp.Workbooks.Add(1);
xlWorkSheet = Excel.Worksheet xlWorkBook.ActiveSheet;
// Notice the index starting at [1,1] (row,column)
for (int i=1; i<DataGridView.Columns.Count+1; i++)
xlWorkSheet.Cells[1, i] = DataGridView.Columns[i - 1].HeaderText;
for each(DataGridViewRow row in DataGridView.Rows)
{
for each (DataGridViewColumn column in DataGridView.Columns)
{
xlWorkSheet.Cells[row.Index+2,column.Index+1] = DataGridView.Rows[row.Index].Cells[column.Index].Value;
}
}
注意索引之间的差异。此示例首先从 DataGridView 复制标题,然后偏移 Excel 工作表中的位置以复制其余数据,因为列标题不计为 DataGrid 中的可索引单元格。这可能也适用于 DataTables。