You need to enable JavaScript to run this app. 如何从Excel或DataSet中读取数据填充Combobox
优惠活动
大模型
产品
解决方案
定价
更多

如何从Excel或DataSet中读取数据填充Combobox

问题原因&解决方案

你代码里主要存在3处错误,修正后即可正常加载数据到组合框:

  • SQL查询语法错误:你写的select 'Skill Name' from [Skill DBase$]中Skill Name用了单引号,会被识别为固定字符串而不是表的列名,列名带空格需要用方括号包裹。如果需要绑定ID作为值,查询语句改为select [ID],[Skill Name] from [Skill DBase$]即可;如果不需要用到ID值,也可以只查询[Skill Name]列,后续删掉ValueMember的设置就行。
  • 数据源列缺失错误:你原来的SQL仅查询了Skill Name一列,但后续设置ValueMember = "ID"时,数据源里根本没有ID字段,会触发绑定异常,要么查询时补上ID列,要么删除ValueMember的赋值语句都可以解决。
  • 可选:驱动兼容问题:如果你用的是64位系统,Microsoft.Jet.OLEDB.4.0只有32位版本,若项目编译目标为64位会报错,可以把项目目标平台改为x86,或者替换连接字符串为ACE驱动:provider=Microsoft.ACE.OLEDB.12.0;Data Source='你的文件路径';Extended Properties="Excel 8.0;HDR=YES;"

修正后完整代码(保留ID绑定版本)

Private Sub LoadExcel()
    Try
        Dim MyConnection As System.Data.OleDb.OleDbConnection
        Dim DtSet As System.Data.DataSet
        Dim MyCommand As System.Data.OleDb.OleDbDataAdapter
        ' 64位系统可替换为ACE驱动的连接字符串
        MyConnection = New System.Data.OleDb.OleDbConnection _
           ("provider=Microsoft.Jet.OLEDB.4.0;Data Source='C:\Users\UserName\Desktop\Sharepoint_Tables_For_Tool2.xls';Extended Properties=Excel 8.0;HDR=YES;")

        ' 修正SQL语法,列名带空格用方括号,补充ID列满足绑定要求
        MyCommand = New System.Data.OleDb.OleDbDataAdapter("select [ID],[Skill Name] from [Skill DBase$]", MyConnection)

        MyCommand.TableMappings.Add("Table", "SkillDbase")
        DtSet = New System.Data.DataSet
        MyCommand.Fill(DtSet)
        DataGridView1.DataSource = DtSet.Tables(0)
        ComboBox1.DataSource = DtSet.Tables(0)
        ComboBox1.ValueMember = "ID"
        ComboBox1.DisplayMember = "Skill Name"

        MyConnection.Close()

    Catch ex As Exception
        MsgBox(ex.ToString)
    End Try
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 12:57:02