使用 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 命令的主要内容,如果未能解决你的问题,请参考以下文章

使用vb.net保护excel中的单元格

如何使用 vb.net 保存 excel 文件?

C#/VB.NET 如何在Excel中使用条件格式设置交替行颜色

如何使用 VB.NET 将 Excel 工作簿保存到一般路径中

如何使用 VB.Net 自定义 Excel

如何使用 vb.net 将 excel 文件导入 sql server