使用 VB.Net 在 Excel 中使用 WHERE SQL 命令
Posted
技术标签:
【中文标题】使用 VB.Net 在 Excel 中使用 WHERE SQL 命令【英文标题】:Using WHERE SQL Command in Excel using VB.Net 【发布时间】:2018-05-12 13:33:10 【问题描述】:我在 VB.Net 中构建 SQL 命令时遇到困难,其中我的项目通过 OLEDB 连接到 Excel。
Select * From [Sheet$]
此 SQL 命令有效,但每当我尝试添加另一个 SQL 命令WHERE
以便过滤数据时,我只想显示。
我的 excel 文件中有标题,Name
标题是第 4 列,相当于列字母:D
。
Select * From [Sheet$] Where Name='Xander'
它不起作用,它什么也没显示。用于 Excel 到 OLEDB 连接的正确'WHERE
'SQL 命令是什么?
顺便说一下,这是我正在处理的代码
Dim conn As OleDbConnection
Dim adapt As OleDbDataAdapter
Dim dts As DataSet
Dim excel As String = My.Settings.DefaultDirectory
conn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excel + ";Extended Properties=Excel 12.0;")
conn.Open()
adapt = New OleDbDataAdapter("Select * from [Sheet$] where NAME='Xander'", conn)
dts = New DataSet
adapt.Fill(dts, "[Sheet$]")
DataGridView1.DataSource = dts
DataGridView1.DataMember = "[Sheet$]"
conn.Close()
【问题讨论】:
你的连接字符串是什么,你有标题列吗?CellHeader
是标题/列吗?
编辑了帖子。 @Codexer 是的,它是标题/列
试试Select * from [Sheet$] Where [NAME]='Xander'
@Codexer,神圣的 groot 朋友!谢谢,我没有想过在标题名称中添加括号谢谢。请写下答案,以便我将其标记为已解决/已回答。再次感谢您。
【参考方案1】:
您需要在列名周围加上方括号以对其进行转义。 Name
也是一个保留字,所以你必须转义它。
Select * from [Sheet$] Where [NAME]='Xander'
【讨论】:
跟进问题,[DATE]='4/2/2017' 我认为它适用于字母字符,但不适用于日期格式。 我做对了吗?从 [Q2$] 中选择 * 其中 [DATE]='#3/2/2018'Select * from [Q2$] Where [DATE]=#3/2/2018#
这就是你的做法...您需要在#
中删除刻度和换行日期...
伙计,你是救生员,我对 Excel SQL 还是个新手,因为我只习惯数据库 SQL,但是谢谢。我想这就是现在的全部了..以上是关于使用 VB.Net 在 Excel 中使用 WHERE SQL 命令的主要内容,如果未能解决你的问题,请参考以下文章
C#/VB.NET 如何在Excel中使用条件格式设置交替行颜色