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
我已经为我的 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