Excel导出多次导出相同的行

我为我的vb.net应用程序编写了一个导出过程,该过程将DataGridView显示的数据导出到Excel电子表格中。

但是,而不是复制DataGridView中的所有23行,它复制相同的,但23次。 下面的For Loop有什么问题,这意味着它只复制一个logging?

 For i = 0 To dgvExport.RowCount - 1 For j = 0 To dgvExport.ColumnCount - 1 For k As Integer = 1 To dgvExport.Columns.Count xlWorksheet.Cells(1, k) = dgvExport.Columns(k - 1).HeaderText xlWorksheet.Cells(i + 2, j + 1) = dgvExport(j, 1).Value.ToString Next Next Next 

我需要复制字段名称,因此HeaderText行和kvariables。

我的DGV的片段,显示有不同的logging; 在这里输入图像说明

由此产生的出口;

在这里输入图像说明

编辑

正如所build议的,我改变了我的代码如下

  For k As Integer = 1 To dgvExport.Columns.Count xlWorksheet.Cells(1, k) = dgvExport.Columns(k - 1).HeaderText Next For i = 0 To dgvExport.RowCount - 1 For j = 0 To dgvExport.ColumnCount - 1 xlWorksheet.Cells(i + 3, j + 1) = dgvExport(j, i).Value.ToString Next Next 

但现在得到一个错误

你调用的对象是空的

在线xlWorksheet.Cells(i + 3, j + 1) = dgvExport(j, i).Value.ToString

原来的重复行的问题是这样的:

 For i = 0 To dgvExport.RowCount - 1 For j = 0 To dgvExport.ColumnCount - 1 For k As Integer = 1 To dgvExport.Columns.Count 

这些单元格被迭代了太多次。 使用一个循环导出HeaderText,然后输出另一个数据。


你调用的对象是空的

AKA NullReferenceException

如果DGU上的AllowUserToAddRows为true,则表示循环了太多的行。 该行中的单元格是Nothing ,所以你得到一个NullReferenceException

  For i = 0 To dgvExport.RowCount - 1 If dgvExport.Rows(i).IsNewRow Then Continue For j = 0 To dgvExport.ColumnCount - 1 xlWorksheet.Cells(i + 3, j + 1) = dgvExport(j, i).Value.ToString Next Next 

或者改变行循环:

 ' one less to account for the new user row For i = 0 To dgvExport.RowCount - 2