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

VB.NET中DataGridView无Rows/Columns成员问题及Excel导出方案

解决VB.NET WinForm中DataGridView导出Excel的问题

问题排查:Rows/Columns属性不存在的原因

  • 最常见的原因是控件变量名不匹配:检查窗体设计器中DataGridView控件的Name属性,确保代码中使用的变量名和控件实际名称一致(比如控件名为dataGridView1,代码里不能写成dataGridView)。
  • 若确认变量名正确,检查是否误引用了WPF的DataGrid控件(WinForms的控件是System.Windows.Forms.DataGridView,WPF的是System.Windows.Controls.DataGrid,两者属性结构不同)。

修正后的导出代码(适配显示内容)

由于你通过格式化函数隐藏了部分值,应该取单元格的Text属性而非Value,确保导出的是DataGridView实际显示的内容:

' 导出列头
For colIndex As Integer = 0 To dataGridView1.Columns.Count - 1
    worksheet.Cells(1, colIndex + 1) = dataGridView1.Columns(colIndex).HeaderText
Next

' 导出单元格显示文本,排除新增行
For rowIndex As Integer = 0 To dataGridView1.Rows.Count - 1
    If Not dataGridView1.Rows(rowIndex).IsNewRow Then
        For colIndex As Integer = 0 To dataGridView1.Columns.Count - 1
            ' 仅导出可见列(可选)
            If dataGridView1.Columns(colIndex).Visible Then
                worksheet.Cells(rowIndex + 2, colIndex + 1) = dataGridView1.Rows(rowIndex).Cells(colIndex).Text
            End If
        Next
    End If
Next

' 完成文件保存流程
Dim saveFileDialog As New SaveFileDialog()
saveFileDialog.Filter = "Excel文件 (*.xlsx)|*.xlsx|Excel 97-2003文件 (*.xls)|*.xls"
saveFileDialog.Title = "保存Excel文件"
If saveFileDialog.ShowDialog() = DialogResult.OK Then
    workbook.SaveAs(saveFileDialog.FileName)
    MessageBox.Show("导出成功!")
End If

额外注意事项

  • 若使用Office Interop库,需提前添加Microsoft.Office.Interop.Excel引用。
  • 如果需要处理大量数据,建议改用EPPlus等轻量库替代Interop,避免依赖本地Office安装。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 10:27:24