Excel 多次导出同一行

Excel Export exporting same row multiple times

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

但是,它没有复制 DataGridView 中的所有 23 行,而是复制了同一行,但复制了 23 次。下面的有什么问题For Loop这意味着它只复制了一条记录?

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 行和 k 变量。

我的DGV片段,显示有不同的记录;

结果导出;

编辑

按照建议,我将代码更改为以下内容

 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

但是现在报错

Object reference not set to an instance of an object

在线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,然后使用另一个循环导出数据。


Object reference not set to an instance of an object

又名 NullReferenceException

如果 AllowUserToAddRows 在 DGV 上为真,则表示您循环的行过多。该行中的单元格是 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