‘壹’ VB 查阅 Excel 文件
思路:
1.取得excel对象,然后控制该对象,读取该对象的所有工作表,并写入listbox,
2.当在用户listbox选取某一工作表时,用ADODC控件连接excel,再把DataGrid绑定ADODC控件,通过DataGrid显示表内的数据
*详细方法如下*
建一个窗体:
增加listbox,dataGrid,adodc
控件各1个
窗体内代码如下
Option
Explicit
Public
path
As
String
'excel文件路径
Private
Sub
Form_Load()
Dim
myexcel
As
New
Excel.Application
Dim
mybook
As
Workbook
Dim
mysheet
As
Worksheet
Dim
su,
j
As
Long
'excel表路径
path
=
"D:\我的文档\3000条新书无资料11_3.xls"
Set
mybook
=
myexcel.Workbooks.Open(path)
'遍历每个工作表,取出所有表名
Dim
a
As
Worksheet
For
Each
a
In
mybook.Sheets
'在此循环里,你可以添加到listbox控件
List1.AddItem
a.Name
'
MsgBox
a.Name
'显示工作表的名称
'
MsgBox
a.Range("a1")
'显示A1单元格
Next
mybook.Close
Set
mysheet
=
Nothing
Set
mybook
=
Nothing
Set
myexcel
=
Nothing
End
Sub
Sub
List1_Click()
'单击listbox的表名时
Dim
Conn
As
New
ADODB.Connection
Dim
rs
As
New
ADODB.Recordset
Dim
sql
As
String,
strSheetName
As
String
strSheetName
=
List1.Text
Sql
=
"select
*
from
["
&
strSheetName
&
"$]"
'指定EXCEL表
Adodc1.ConnectionString
=
"Provider=Microsoft.Jet.OLEDB.4.0;Persist
Security
Info=False;Data
Source="
&
path
&
";Extended
Properties='Excel
8.0;HDR=Yes'"
'连接EXCEL文件
Adodc1.RecordSource
=
Sql
Set
DataGrid1.DataSource
=
Adodc1
Adodc1.Refresh
End
Sub
‘贰’ 刚才看到vb使用sql语句查询excel的问题,您是怎么解决的啊
Adodc1.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;PersistSecurityInfo=False;DataSource=H:ook1.xls"&";ExtendedProperties='Excel8.0;HDR=Yes'"
sql="selectD880from[Sheet1$]whereTE='"&Trim(ts.Text)&"'"
Adodc1.RecordSource=sql
Adodc1.Refresh
SetDataGrid1.DataSource=Adodc1
‘叁’ vb 执行sql语句得到的结果集怎样输出到excel单元格中
可以,在vb窗口建个datagrid,adodc,用adodc绑定你的数据库,datagrid的DataSource选择那个adodc,这样就能把记录集中的数据显示在datagrid表格中,然后再把datagrid表格中的查询结果导入到Excel中,把datagrid导入到Excel的代码如下:
DimexAsObject
DimiAsInteger
DimjAsInteger
DimXlAppAsExcel.Application
DimxlBookAsExcel.Workbook
DimxlSheetAsExcel.Worksheet
SetXlApp=CreateObject("Excel.Application")
XlApp.Visible=True
SetxlBook=XlApp.Workbooks.Add
SetxlSheet=xlBook.Worksheets(1)
Fori=0ToDataGrid1.Columns.Count-1
Forj=0ToDataGrid1.ApproxCount-1
DataGrid1.Col=i
OnErrorResumeNext
DataGrid1.Row=j
xlSheet.Cells(j+1,i+1)=DataGrid1.Columns.Item(i).Text
Nextj
Nexti
上述代码可以做进按钮里,记得引用里面添加Excel的dll
望采纳
‘肆’ VB查询SQL数据库然后在写到Excel表中
select
*
from
表名
where
时间字段名
between
'2010-7-29
13:00:00'
and
'2010-7-29
14:00:00'
然后再写一个方法把取出来的数据写到Excel里面就行。
[email protected]
‘伍’ vb查询sql数据库生成excel
上网上查一下VB操作excel程序,然后将你的rs记录集循环向每行每列赋值就好了。
‘陆’ 如何用VB制作简单的查询程序,查询EXCEL表格中的内容并显示出结果
n Explicit
Private objSWbemServices As SWbemServices '
Private WithEvents DeleteProcessEvent As SWbemSink '进程结束监控
Dim xlApp As Excel.Application '定义EXCEL类
Dim xlBook As Excel.Workbook '定义工件簿类
Dim xlsheet As Excel.Worksheet '定义工作表类
Private Sub Initial(ss As String)
Dim i, j As Integer
Set xlApp = CreateObject("Excel.Application") '创建EXCEL应用类
'xlApp.Visible = True '设置EXCEL可见
'Set xlBook = xlApp.Workbooks.Open(App.Path + "\" & "106-33-LCDTest-20130202.csv") '打开EXCEL工作簿
Set xlBook = xlApp.Workbooks.Open(App.Path + "\" & ss) '打开EXCEL工作簿
Set xlsheet = xlBook.Worksheets(1) '打开EXCEL工作表
xlsheet.Activate '激活工作表
'-----正式统计数量
Text1.Text = xlsheet.UsedRange.Cells.Rows.Count
sun = xlsheet.UsedRange.Cells.Rows.Count
For i = 2 To xlsheet.UsedRange.Cells.Rows.Count - 1
If Format(xlsheet.Cells(i, 3), "mm/dd") = Format(Now, "mm/dd") Then '统计今天的数据
Select Case Format(xlsheet.Cells(i, 3), "hh")
Case 0, 1 '0-1点钟数据统计
If xlsheet.Cells(i, 2) = "PASS" Then
Select Case xlsheet.Cells(i, 6)
Case 1
u(1, 1) = u(1, 1) + 1
Case 2
u(3, 1) = u(3, 1) + 1
Case 3
u(5, 1) = u(5, 1) + 1
Case 4
u(7, 1) = u(7, 1) + 1
Case Else
MsgBox "Nest异常", vbCritical, "消息提示:"
End Select
Else
。。。。。。。。。。。。。。。。。。。。。。。。
Else
Select Case xlsheet.Cells(i, 6)
Case 1
u(2, 12) = u(2, 12) + 1
Case 2
u(4, 12) = u(4, 12) + 1
Case 3
u(6, 12) = u(6, 12) + 1
Case 4
u(8, 12) = u(8, 12) + 1
Case Else
MsgBox "Nest异常", vbCritical, "消息提示:"
End Select
j = j + 1
End If
Case Else
'MsgBox "时间格式异常", vbCritical, "消息提示:"
End Select
End If
Next i
'-----------------------------------------------------------
'xlBook.Save '保存文件
xlBook.Close (True) '关闭工作簿
xlApp.Quit '结束Excel对象
Set xlApp = Nothing '释放xlApp对象
'MsgBox "初始化完成", vbCritical, "消息提示:OK"
Text2.Text = Format(j / Text1.Text, "0.00%")
End Sub
‘柒’ vb调用excel表查询
中间部分的语句
Set conn = CreateObject("ADODB.Connection")
tns = excel的fullpath
With conn
.Provider = "Microsoft.ace.OLEDB.12.0"
.ConnectionString = "Data Source=" & tns & ";Extended Properties=Excel 12.0;"
.Open
End With
sql = "select 发车站, 终点,发车时间,车型, 票价,备注 from [data$] where 发车站='" & combo1 & "' and 终点 ='" & text & "'"
set myrs=conn.execute(sql)
if not myrs.eof
Dim excelApp As Object
Set excelApp = CreateObject("Excel.APPLICATION")
for i=1 to myrs.fields.count
excelapp.sheets(1).cells(1,i)=myrs.fields(i-1).name
next
excelapp.sheets(1).cells(2,1).CopyFromRecordset myrs
endif
set myrs=nothing
excelapp.quit
set excelapp=nothing
conn.close
set conn=nothing
‘捌’ 怎么通过VB编程select语句来筛选Excel表格中的数据
核心步骤:1,讲两张数据表放进同一个excel文件内,可以在同一个sheet或者不同sheet。选择对应的数据区域,右键,“定义名称”。说明:这里,数据的第一行是列名,定义的名字,是表名。2、选择“数据”——“其他来源”——“来自Microsoft
Query”。3、选择“Excel
Files*
“那一项,并且把对话框下面的“使用“查询向导”创建/编辑查询”勾去掉。4、在弹出的对话框中将刚才我们命名的那两个表都添加进去。5、点击上边的
SQL
按钮,开始写你的SQL语句吧。确定后下边可以看到结果。6、如果你想导出数据,点击“文件”——“将数据返回Microsoft
Excel”,建议选择导入到新表中,OK
‘玖’ vb如何将SQL数据库查询的结果导出到带字段名的Excel表
你在用CopyFromRecordset前先把字段名写上,然后换一行再把数据集拷贝就可以了。
===========================================================
先把这句mExcelFile.Application.Range("A1").CopyFromRecordset
mRs
改为:
mExcelFile.Application.Range("A2").CopyFromRecordset
mRs
然后在这句前面加上下面的代码试试看,应该可以的:
For
i
=
0
To
mRst.Fields.Count
-
1
mExcelFile.ActiveSheet.Cells(1,
i
+
1).Value
=
mRst.Fields(i).Name
Next
'设置字段名加粗(如果不需要可忽略此句)
mExcelFile.ActiveSheet.Range(.ActiveSheet.Cells(1,
1),
mExcelFile.ActiveSheet.Cells(1,
mRst.Fields.Count)).Font.Bold
=
True
‘拾’ 用VB查询excel表格数据
可以调用excel数据表的find方法,也可以自己编一段程序找到底盘号所在行。
然后,根据数据表结构,取同行的不同列的数据,显示出来就行了。