救命,怎么读入一个excel文件并在datagrid或者data控件中显示出来啊。

hepig2000 2003-11-23 05:05:22
怎么读入一个excel文件并在datagrid或者data控件中显示出来啊,最后给一个示例代码。
...全文
40 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hepig2000 2003-11-25
  • 打赏
  • 举报
回复
感谢,我在程序中加入commondialog进行选择,编译通过。
online 2003-11-23
  • 打赏
  • 举报
回复
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)
online 2003-11-23
  • 打赏
  • 举报
回复
Dim con As Connection
Dim re As Recordset

Private Sub Form_Load()
Set con = New Connection
con.Open "provider=microsoft.jet.oledb.4.0; data source=t.xls;Extended Properties=Excel 8.0;"
Set re = New Recordset
re.Open "select * from x", con, adOpenDynamic, adLockBatchOptimistic
Set datagrid1.DataSource = re
online 2003-11-23
  • 打赏
  • 举报
回复

Public Function Read_Excel _
(ByVal sFile _
As String) As ADODB.Recordset

On Error GoTo fix_err
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
Dim sconn As String

rs.CursorLocation = adUseClient
rs.CursorType = adOpenKeyset
rs.LockType = adLockBatchOptimistic

sconn = "DRIVER=Microsoft Excel Driver (*.xls);" & "DBQ=" & sFile
rs.Open "SELECT * FROM [sheet1$]", sconn
Set Read_Excel = rs
Set rs = Nothing
Exit Function
fix_err:
Debug.Print Err.Description + " " + _
Err.Source, vbCritical, "Import"
Err.Clear
End Function


然后
窗体中set datagrid.datasource=Read_Excel("c:\aaa.xls")
simanh 2003-11-23
  • 打赏
  • 举报
回复
首先从excel中读入所有行,然后在VB中创建DataRows对象,循环赋值后把DataRows赋给Recordset
读入excel记录:
1.引用excel object
2.dim xbook as excel.workbook
set xbook = getobject("c:\test.xls")
xbook.worksheets(1).select
3.循环读出所有行

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧