VB 查阅 Excel 文件

本人有 N 个Excel表格(已经在当前目录),姑且叫 N1.xls 、N2.xls.....。
每个表格固定4个工作表:Sheet1-4。
我想用一个 ADO 控件、一个DataGrid控件,来显示 Excel 文件。用FileListBox 控件选择文件,用两个按钮控件来选择工作表。
折腾了老半天,没成功。
就是要利用 ADO 控件和 DataGrid控件 查看 现有的 Excel 文件(不是新建立 Excel 文件)。
因为有多个 Excel 文件 所以想用FileListBox 控件选择要查阅的文件。
因为每个 Excel 文件中有4个工作表,想用 按钮控件来选择工作表来选择工作表。
如果我的算法不可行,请高手为我想个更好的办法,总之能方便查阅 Excel文件就可以。
请那位高手帮个忙,为我写个程序,上机一通过一定追加分。
先谢了。
可能我的设想不对,只要能方便地利用类是DataGrid控件等表格控件查阅,Excel文件的内容就可以。(不要进入Excel界面,没有Spreadsheet控件)

思路:
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
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-01-19
'建立一个filelistbox,两个commandbutton,引用excel,一个附加控件microsoft office xp web components中的spreadsheet
'再有问题 HI 我
Dim ExcelApp As Excel.Application
Dim N

Private Sub Command1_Click()
N = N - 1
If N = 1 Then Command1.Enabled = False
If N <> 4 Then Command2.Enabled = True
Xian
End Sub

Private Sub Command2_Click()
N = N + 1
If N = 4 Then Command2.Enabled = False
If N <> 1 Then Command1.Enabled = True
Xian
End Sub

Private Sub File1_DblClick()
ExcelApp.Workbooks.Close
ExcelApp.Workbooks.Open File1.Path & "\" & File1.FileName
Xian
Command1.Enabled = False
Command2.Enabled = True
N = 1
End Sub

Private Sub Form_Load()
N = 1
Command1.Enabled = False
Command2.Enabled = False
File1.Path = "C:\AAA\"
Set ExcelApp = New Excel.Application
Caption = "管理"
Command1.Caption = "后退"
Command2.Caption = "前进"
End Sub

Private Function Xian()
ExcelApp.Sheets(N).Select
ExcelApp.Cells.Select
Selection.Copy
Spreadsheet1.Cells.Select
Spreadsheet1.Selection.Paste
Spreadsheet1.Cells(1, 1).Select
End Function
第2个回答  2009-01-19
你的这个思路有个缺陷:如果excel文件中含有公式,图像等特殊格式时,DataGrid控件是无法完整显示的。

为此,我给你提供了一个新的方法,它可以完整显示excel文件中的内容,下面是源码实例,请下载:

http://www.fileurls.com/download.ashx?id=valwgk
第3个回答  2009-01-19
ado控件可以读取excel???偶孤陋寡闻。。。。
ado貌似是读取数据库的吧。。。
操作 excel 请用 excel.Application 对象。
显示 excel 请用mshflexgrid 控件
第4个回答  2009-01-19
用ADO操作Excel没用过,不过直接读写用的多了,不知为什么一定要用ADO,如有需要给我留言
第5个回答  2009-01-19
这东西太长了.很难写的.

所以....建议自己认真去学习.这些东西网上抄也没用.
相似回答
大家正在搜