You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET 如何将DataGridView中勾选的行导出为CSV文件

问题排查与修复方案

核心错误原因

  • 原有代码判断勾选状态时,永远读取的是DataGridView1.CurrentRow也就是当前界面选中行的勾选状态,和你遍历到的导出行没有任何关联,自然无法正确筛选勾选行。
  • LINQ查询阶段直接把行对象转换成了单元格值数组,丢失了原行的上下文信息,额外增加了判断成本。

修复后代码

' 直接在LINQ查询阶段完成勾选判断,过滤非目标行
Dim rows = From row As DataGridViewRow In DataGridView1.Rows.Cast(Of DataGridViewRow)()
           Where Not row.IsNewRow _
           AndAlso row.Cells(10).Value IsNot Nothing _
           AndAlso Convert.ToBoolean(row.Cells(10).Value) = True ' 判断当前遍历行第10列的勾选状态
           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(Path)
    For Each r In rows
        sw.WriteLine(String.Join(",", r))
    Next
End Using

注意事项

  • DataGridView的列索引从0开始计数,如果你说的第10列是界面从左到右数的第10个列,对应索引应为9,可根据实际情况调整。
  • 如果你自定义了CheckBox列的TrueValue属性为1而非默认布尔值,将勾选判断条件替换为row.Cells(10).Value.ToString() = "1"即可。
  • 若单元格内容包含逗号、双引号,建议添加转义逻辑,避免生成的CSV格式异常。

内容的提问来源于stack exchange,提问作者Patrick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 15:21:00