Vb.net 如何将datagridview中仅包含隐藏列的选定行导出到excel中?

Vb.net 如何将datagridview中仅包含隐藏列的选定行导出到excel中?,vb.net,Vb.net,我是个新手,然后是自学成才的, 我有一个datagridview,它将从我的数据库加载数据,它有一个隐藏列,我想将选定的数据行导出到excel中,但我想导出的是datagridview中唯一可见的列到excel,并且只导出选定的行 我不知道该怎么做才对 我怎样才能组合这个?“我的excel”中将导出选定列和唯一可见列 For i = 0 To SelectedRowCount - 1 currentVisibleColumn = columnCollection.GetF

我是个新手,然后是自学成才的, 我有一个datagridview,它将从我的数据库加载数据,它有一个隐藏列,我想将选定的数据行导出到excel中,但我想导出的是datagridview中唯一可见的列到excel,并且只导出选定的行

我不知道该怎么做才对

我怎样才能组合这个?“我的excel”中将导出选定列和唯一可见列

For i = 0 To SelectedRowCount - 1 currentVisibleColumn = columnCollection.GetFirstColumn(DataGridViewElementStates.Visible) lastColumnExported = currentVisibleColumn For j = 1 To visibleColumnCount + 1 Dim value = DataGridView1.Rows(i).Cells(currentVisibleColumn.Index).Value If value IsNot vbNullString Then xlWorkSheet.Cells(i + 2, j) = value.ToString() xlWorkSheet.Cells(i + 2, j + 1) = DataGridView1(j, DataGridView1.SelectedRows(i).Index).Value.ToString() End If currentVisibleColumn = columnCollection.GetNextColumn(lastColumnExported, DataGridViewElementStates.Visible, DataGridViewElementStates.None) lastColumnExported = currentVisibleColumn Next Next 对于i=0,选择的行程计数为-1 currentVisibleColumn=columnCollection.GetFirstColumn(DataGridViewElementState.Visible) lastColumnExported=currentVisibleColumn 对于j=1到visibleColumnCount+1 Dim值=DataGridView1.Rows(i).Cells(currentVisibleColumn.Index).value 如果值不是vbNullString,则 xlWorkSheet.Cells(i+2,j)=value.ToString() xlWorkSheet.Cells(i+2,j+1)=DataGridView1(j,DataGridView1.SelectedRows(i).Index.Value.ToString() 如果结束 currentVisibleColumn=columnCollection.GetNextColumn(lastColumnExported,DataGridViewElementState.Visible,DataGridViewElementState.None) lastColumnExported=currentVisibleColumn 下一个 下一个
当我这样做时,它会给我“对象引用未设置为对象的实例”。

您的代码应该更像这样:

Dim columns = (From column In DataGridView1.Columns.Cast(Of DataGridViewColumn)()
               Where column.Visible
               Order By column.DisplayIndex).ToArray()

For Each row As DataGridViewRow In DataGridView1.SelectedRows
    For Each column In columns
        Dim value = row.Cells(column.Index)

        If value IsNot Nothing Then
            '...
        End If
    Next
Next

如果你仍然得到一个
NullReferenceException
,那么你需要更具体地了解它以获得更多帮助,但是这些问题的解决方案几乎总是一样的。

在哪一行发生异常?在这一行xlsheet.Cells(i+2,j+1)=DataGridView1(j,DataGridView1.SelectedRows(i).Index).Value.ToString()