[英]Datagridview to a specific excel cell
我有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,我正在尝试复制标头及其值。
第一datagridview头值在第7n行单元D7
处完成,并且行值在第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();
}
}
您会注意到,由于两组循环之间的差异现在可以忽略不计,因此您可以轻松地将它们组合在一起,从而减少了执行时间(尽管显然只有更多的数据才会产生明显的影响)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.