Datagridview到一个特定的Excel单元格

我有2个datgridviews,试图复制标题和它的值到Excel工作表。 第一个循环对第一个datagirdview工作正常

for (int i = 1; i < dataGridView1.Columns.Count + 1; i++) { worksheet.Cells[7, i] = dataGridView1.Columns[i - 1].HeaderText; } // storing Each row and column value to excel sheet for (int i = 0; i < dataGridView1.Rows.Count - 1; i++) { for (int j = 0; j < dataGridView1.Columns.Count; j++) { worksheet.Cells[i + 8, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString(); } } 

这是第二个datagridview,我试图复制头和它的值。

在第7行单元格D7完成第一个datagridview标题值,在第8行单元格D8完成行值。

我想把从第7行E7的第二个datagridview标题和从第8行E8的行值。

 //Primary Continuation for (int i = 7; i < dataGridView2.Columns.Count + 1; i++) { worksheet.Cells[7, i] = dataGridView2.Columns[i - 1].HeaderText; } // storing Each row and column value to excel sheet for (int i = 0; i < dataGridView2.Rows.Count - 1; i++) { for (int j = 0; j < dataGridView2.Columns.Count; j++) { worksheet.Cells[i + 8, j + 1] = dataGridView2.Rows[i].Cells[j].Value.ToString(); } } 

所以,如果我正确地理解了你,你想把你的两张桌子放在Excel表格上? 在这种情况下,您看起来像是在第二个DataGridView的循环中混合了偏移量。 在这个循环中:

 //Primary Continuation for (int i = 7; i < dataGridView2.Columns.Count + 1; i++) { worksheet.Cells[7, i] = dataGridView2.Columns[i - 1].HeaderText; } 

而不是偏移您的计数7(驱动网格中的源数据位置),您需要偏移Excel工作表中的目标,因为第二个DataGridView的位置将与第一个相同。 你可以复制你的第一个循环,但只是稍微改变目的地。 事实上,对于最终的循环也是一样。

还值得注意的是,你的循环复制值将错过最后一行。 我不确定这是否是有意的,但是我已经纠正了它。 这是你的第二套循环应该看起来如何。

 //Primary Continuation for (int i = 1; i < dataGridView2.Columns.Count + 1; i++) { worksheet.Cells[7, i + dataGridView2.Columns.Count] = dataGridView2.Columns[i - 1].HeaderText; } // storing Each row and column value to excel sheet for (int i = 0; i < dataGridView2.Rows.Count; i++) { for (int j = 0; j < dataGridView2.Columns.Count; j++) { worksheet.Cells[i + 8, j + 1 + dataGridView2.Columns.Count] = dataGridView2.Rows[i].Cells[j].Value.ToString(); } } 

您会注意到,由于两组循环之间的差异现在可以忽略不计,因此您可以轻松地将它们组合在一起,减less执行时间(尽pipe显然只有更多的数据才会显着影响)。