vb.net如何与excel建立连接,并从里面查询并读取数据?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vb.net如何与excel建立连接,并从里面查询并读取数据?相关的知识,希望对你有一定的参考价值。
vb.net如何与excel建立连接,并里面查询并读取数据?
我看有人说在项目里引用excel类库 我在点添加引用里面什么都没有啊
可以写一个很简单的小例子吗?万分感谢!
1.新建一张表格,在表格中导入学生的成绩表,如图所示,将建立一个按钮,通过它来实现查找。
2.单击菜单栏中的“开发工具”——插入——表单控件——按钮,在出现的十字箭头上拖住画出一个按钮,如图所示。
3.在弹出的查找红对话框中选择“录制”,在弹出的“录制新宏”对话框中,修改宏名称为“查找”,单击确定。
4. 单击“开发工具”——查看代码,打开VBA编辑器,如图所示。
5.现在输入代码:
Sub 查找()
Dim jieguo As String, p As String, q As String
Dim c As Range
jieguo = Application.InputBox(prompt:="请输入要查找的值:", Title:="查找", Type:=2)
If jieguo = "False" Or jieguo = "" Then Exit Sub
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With ActiveSheet.Cells
Set c = .Find(jieguo, , , xlWhole, xlByColumns, xlNext, False)
If Not c Is Nothing Then
p = c.Address
Do
c.Interior.ColorIndex = 4
q = q & c.Address & vbCrLf
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> p
End If
End With
MsgBox "查找数据在以下单元格中:" & vbCrLf & vbCrLf _
& q, vbInformation + vbOKOnly, "查找结果"
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
6.现在回到EXCEL表格,右击按钮,选择“编辑文字”,修改按钮名称为“查找按钮”。
7. 现在单击查找按钮,出现对话框“请输入要查找的值”,在方框中输入“男”,单击确定,出现对话框“查找数据在一下单元格中”,单击确定,对应单元格就变成了亮色。
参考技术A 三种方式1.用OLEDB ,将Excel视为数据源
2.采用Office 的API
3.将Excel作为Zip文件解压缩,获得内容的Xml文档追问
可以写一个将excel视为数据源连接的小例子吗?然后建立连接后怎么查询里面的值呢?
追答将Excel视为数据库的话 用SQL就可以查询了
例子就不给你了 网上有的是
这个就是.net啊 只不过用的是vb.net不是C#,可以指导一下怎么将excel设为数据源并用select查询里面的数据吗?
追答你这个就是将excel导入到vb中吧???
使用带有 ADO 的 Excel 2010 VBA(或带有 LINQ 的 vb.net)查询表的最佳 SQL 语句是啥
【中文标题】使用带有 ADO 的 Excel 2010 VBA(或带有 LINQ 的 vb.net)查询表的最佳 SQL 语句是啥【英文标题】:What is the best SQL statement to query a table using Excel 2010 VBA with ADO (or vb.net with LINQ)使用带有 ADO 的 Excel 2010 VBA(或带有 LINQ 的 vb.net)查询表的最佳 SQL 语句是什么 【发布时间】:2014-03-06 01:01:58 【问题描述】:表名:员工
现在我一直在试图弄清楚如何将我的两个 SQL 查询合并为一个。
查询 #1:
SELECT *
FROM `employees`
WHERE `name` = 'BOB'
这显然只返回 1 行。
接下来,我使用组号查找属于该组的任何其他员工。
查询 #2:
SELECT *
FROM `employees`
WHERE `group` = 1
这是我希望仅使用一个 SQL 查询(而不是两个)就能返回的记录集。使用 phpMyAdmin 和 MySQL 我想出了一个方法,但是在 Excel VBA 和 ADO 中我不知道如何执行相同的语句。
组合查询:
SET @V1 := (
SELECT l1.group
FROM `employees` AS l1
WHERE l1.name = 'BOB'
);
SELECT *
FROM `employees`
WHERE `group` = @V1;
现状:
现在我正在使用 Excel 2010 VBA 和 ADO 来查询保存在本地文件夹中的已关闭工作簿。
对于这个例子,我严重地过度简化了表格的结构,但想法是一样的。我在工作簿中的实际表格包含 37,000 多行 19 列。
解决此问题的最佳方法是什么?如果它提供更好的性能和更大的灵活性,我想将 LINQ 与 vb.net 一起使用。
使用 VBA 和 ADO 进行两次查询耗时太长,感觉 Excel 有时会挂起。
【问题讨论】:
也许不是您想要的,但“常规”SQL 方法是使用子查询:SELECT * FROM employees WHERE group in (SELECT group FROM employees WHERE name like 'BOB')
@1.618 谢谢!我刚刚调整了我的一些代码,现在正在使用 ADO。感谢您的帮助 - 作为答案发布,如果您愿意,我会选择您的。
【参考方案1】:
这是您需要的 SQL 查询:
SELECT *
FROM employees
WHERE group in
(SELECT group
FROM employees
WHERE name like 'BOB')
括号中的部分称为子查询。
【讨论】:
以上是关于vb.net如何与excel建立连接,并从里面查询并读取数据?的主要内容,如果未能解决你的问题,请参考以下文章
vb2010 (vb.net )Socket套接字当网络中断时或服务器意外关机,客户端如何自动重新连接服务端
如何实例化一个 vba 类并从 vb.net 调用一个方法?