Vb.net 导出在DataGridView中可见等于True的字段
我找到这篇关于的帖子,我想知道是否有人知道如何导出只可见的字段=TrueVb.net 导出在DataGridView中可见等于True的字段,vb.net,linq,csv,datagridview,export-to-csv,Vb.net,Linq,Csv,Datagridview,Export To Csv,我找到这篇关于的帖子,我想知道是否有人知道如何导出只可见的字段=True Private Sub ExportCSVButton_Click(sender As Object, e As EventArgs) Handles ExportCSVButton.Click Dim headers = (From header As DataGridViewColumn In PadGridView.Columns.Cast(Of DataGridViewColumn)()
Private Sub ExportCSVButton_Click(sender As Object, e As EventArgs) Handles ExportCSVButton.Click
Dim headers = (From header As DataGridViewColumn In PadGridView.Columns.Cast(Of DataGridViewColumn)()
Select header.HeaderText).ToArray
Dim rows = From row As DataGridViewRow In PadGridView.Rows.Cast(Of DataGridViewRow)()
Where Not row.IsNewRow
Select Array.ConvertAll(row.Cells.Cast(Of DataGridViewCell).ToArray, Function(c) If(c.Value IsNot Nothing, c.Value.ToString, ""))
Using sw As New IO.StreamWriter("export.csv")
sw.WriteLine(String.Join(",", headers))
For Each r In rows
sw.WriteLine(String.Join(",", r))
Next
End Using
Process.Start("export.csv")
End Sub
获取数组中的可见列,然后可以使用该列筛选标题和行单元格:
Dim visibleColumns = (From header As DataGridViewColumn In PadGridView.Columns.Cast(Of DataGridViewColumn)()
Where header.Visible
Select header.Index).ToArray
Dim headers = (From header As DataGridViewColumn In PadGridView.Columns.Cast(Of DataGridViewColumn)()
Where visibleColumns.Contains(header.Index)
Select header.HeaderText).ToArray
Dim rows = From row As DataGridViewRow In PadGridView.Rows.Cast(Of DataGridViewRow)()
Where Not row.IsNewRow
Select Array.ConvertAll((From x In row.Cells.Cast(Of DataGridViewCell).ToArray Where visibleColumns.Contains(x.ColumnIndex)).ToArray, Function(c) If(c.Value IsNot Nothing, c.Value.ToString, ""))
Using sw As New IO.StreamWriter("export.csv")
sw.WriteLine(String.Join(",", headers))
For Each r In rows
sw.WriteLine(String.Join(",", r))
Next
End Using
Process.Start("export.csv")
如果有不可见的列,只需将该列的测试添加到2个查询中即可。请阅读并使用@Proputinix,您能解释更多吗?仍然困惑