哪个哥哥,姐姐,叔叔,阿姨可以给我讲讲通过VB语言读取Excel表格的内容
我的原始资料是多个单个的EXCEL表格,我目的是将它们依次读入到数据库
我的原始资料是多个单个的EXCEL表格,我目的是将它们依次读入到数据库
解决方案 »
- 新版QQ宠物修改了 api 函数 OpenProcess,总是会把已经结束的进程返回一个有效值,怎么改回去
- MDI窗体如何合并菜单?
- 如何使在VB中显示尾部带箭头的线?
- WebBrowser中控制DIV问题
- msflexgrid控件怎么设置网格宽度
- 为什么经过vb字符串的space()设定大小,赋值之后,再用trim()取消其前后空格,取其长度要比实际一?
- 如何用VB编程在Win2000中改变屏幕分辨率?
- 用VB+ACCESS做excel报表结出数据
- 程序a如何能使程序b中的form1中的button1产生click事件呢?最好能有demo,先谢过了!!!
- 2000元用蚁群算法编程序,高手来
- 请大家帮忙写一条SQL查询语句,送99分!
- 为何在vsprinter中设置 footer 和 header 属性不生效?
'** 打开execl表格文件
Set objExecl = New Excel.Application
objExecl.Workbooks.Open execl文件名
objExecl.Cells(r, c) 'r行c列单元格的值工程引用execl对象后,具体的objExecl中各种方法和属性可以在VB的对象浏览器中找到。在execl中也可以找到。
Dim objExcel As Excel.Application
fileName=""
Set objExcel = New Excel.Application
'open the file
objExcel.Workbooks.Open fileName
'operate the file
Text1.Text = objExcel.Cells(rowNum,cellNum)
'close the file
objExcel.Workbooks.Close
Set objExcel = Nothing
select * into AA from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\book1.xls',sheet1$)
不通過VB不是更簡單
'首先在工程中引用Execl对象库
Private MyExcel As New Excel.ApplicationPrivate Sub cmdOK_Click()
Dim eRows As Long
Dim eCols As Long
Dim i As Long
Dim j As Long
Dim c1() As String
Dim SQL As String
MyExcel.Workbooks.Open App.Path & "\Book1.xls"
eRows = MyExcel.Sheets(1).UsedRange.Rows.Count 'excel 的行數
eCols = MyExcel.Sheets(1).UsedRange.Columns.Count 'excel 的列數
ReDim c1(eRows) As String
For i = 1 To eRows
c1(i) = Trim(MyExcel.Worksheets(1).Cells(i, 1))
Next i
MsgBox "完成"
MyExcel.Workbooks.Close
Set MyExcel = Nothing
End Sub
回复人: lihonggen0(李洪根,MS MVP,标准答案来了) ( ) 信誉:294 2003-05-16 10:18:55Z 得分:0
?
引用Excel 对象 Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open(....
Set xlSheet = xlBook.Worksheets(1)
xlSheet.Cells(1, 4).Value = "aaa"
Top
回复人: ch21st(www.blanksoft.com) ( ) 信誉:105 2003-05-16 10:57:19Z 得分:0
?
我说一种dao的方法(也可用ado)
假如excel数据
male female children teens
11 cc 78 ee
22 xx 33 ff
45 uu 56 oo
用ISAM第一行略过
在excel中定义名称(插入-名称-定义)
名称范围 : myRange1male female children teens名称范围 : myRange211 cc 78 ee
22 xx 33 ff
45 uu 56 ooprivate Sub Command_click1im dbtmp As DAO.Database
im tblObj As DAO.TableDef
im rs As DAO.Recordsetet dbtmp = OpenDatabase_
("<complete path>\test.xls", False, True, "Excel 8.0;")DoEventsSet rs = dbtmp.OpenRecordset("select * from `myRange2`")
While Not rs.EOF
For x = 0 To rs.Fields.Count - 1
Debug.Print rs.Fields(x).Value
Next
rs.MoveNext
Wend
End Sub在myRange2两边加'号.结果11
cc
78
ee
22
xx
33
ff
45
uu
56
oo ___
( ">
)(
// ) [email protected]
--//""------------
-/------
Top
回复人: ch21st(www.blanksoft.com) ( ) 信誉:105 2003-05-16 11:00:32Z 得分:0
?
ado方法
Dim adoConnection As New ADODB.Connection
Dim adoRecordset As New ADODB.Recordset
'OLE DB + ODBC Driver 方式:
'adoConnection.Open "Data Provider=MSDASQL.1;driver=Microsoft Excel Driver (*.xls);DBQ=e:\temp\book2.xls"
'Microsoft.Jet.OLEDB.4.0 方式,(建议)
adoConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=e:\temp\book2.xls;Extended Properties='Excel 8.0;HDR=Yes'"
adoRecordset.Open "select * from [sheet1$]", adoConnection, adOpenKeyset, adLockOptimistic
Debug.Print adoRecordset.RecordCount
Dim i As Integer
Do Until adoRecordset.EOF
For i = 0 To adoRecordset.Fields.Count - 1
Debug.Print adoRecordset.Fields.Item(0).Name
Debug.Print adoRecordset.Fields.Item(0).Value
Next i
adoRecordset.MoveNext
Loop
'注: OLE DB + ODBC Driver 方式不支持以下语句,但 Microsoft.Jet.OLEDB.4.0 方式支持!
adoConnection.Execute "insert into [sheet1$](F1) values(3)"
adoRecordset.AddNew Array("f1", "f2", "f3", "f4"), Array(1, 2, 3, 4) ___
( ">
)(
// ) [email protected]
--//""------------
-/------
Top
回复人: lihonggen0(李洪根,MS MVP,标准答案来了) ( ) 信誉:294 2003-05-16 12:16:38Z 得分:0
?
可以使用ado直接调用EXCEL的数据,而不需要使用ACCESS。
Dim oConn As New ADODB.Connection
Dim oRS As New ADODB.Recordset
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Book1.xls;" & _
"Extended Properties=""Excel 8.0;"""
oRS.Open "Select * from [Sheet1$]", oConn, adOpenStatic '打开Sheet1,也可以是定义的名称,或一个Range。
..
..
..
oRS.Close
oConn.Close
更具体的方法可以参考微软的Knowledge Base的文章:“Q278973 xcelADO Demonstrates How To Read/Write Data in Excel Workbooks”。
用这个方法调用EXCEL数据是非常快的。能否用VB的ADO的方法访问Excel文件,如果能该怎样实现?Dim adoConnection As New ADODB.Connection
Dim adoRecordset As New ADODB.Recordset
'OLE DB + ODBC Driver 方式:
'adoConnection.Open "Data Provider=MSDASQL.1;driver=Microsoft Excel Driver (*.xls);DBQ=e:\temp\book2.xls"
'Microsoft.Jet.OLEDB.4.0 方式,(建议)
adoConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=e:\temp\book2.xls;Extended Properties='Excel 8.0;HDR=Yes'"
adoRecordset.Open "select * from [sheet1$]", adoConnection, adOpenKeyset, adLockOptimistic
Debug.Print adoRecordset.RecordCount
Dim i As Integer
Do Until adoRecordset.EOF
For i = 0 To adoRecordset.Fields.Count - 1
Debug.Print adoRecordset.Fields.Item(0).Name
Debug.Print adoRecordset.Fields.Item(0).Value
Next i
adoRecordset.MoveNext
Loop
'注: OLE DB + ODBC Driver 方式不支持以下语句,但 Microsoft.Jet.OLEDB.4.0 方式支持!
adoConnection.Execute "insert into [sheet1$](F1) values(3)"
adoRecordset.AddNew Array("f1", "f2", "f3", "f4"), Array(1, 2, 3, 4) 微软的答案:
http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q278/9/73.asp&NoWebContent=1
Top
回复人: lihonggen0(李洪根,MS MVP,标准答案来了) ( ) 信誉:294 2003-05-16 12:17:11Z 得分:0
?
微软的答案:
http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q278/9/73.asp&NoWebContent=1