vb.net不打开EXCEL取Sheet名称(子表名称)教程
的有关信息介绍如下:
在vb.net(2005、2008、2010、2012等)中,如何在不打开excel的时候获取电子表格的名称,使用ADO技术连接到EXCEL,然后取得电子表格的名称
EXCEL连接字符串详解:
Dim Str As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & bookpath &_
";ExtendedProperties=""Excel 8.0;HDR=No;IMEX=1;"""
Provider=Microsoft.ACE.OLEDB.12.0是在EXCEL2007及以上使用;如果使用EXCEL2003及一下,请使用“provider=Microsoft.Jet.OLEDB.4.0”
Data Source=bookpath
其中bookpath,是EXCEL文件的路径地址,包括文件名称
ExtendedProperties="Excel 8.0;HDR=No;IMEX=1;"
注意用双引号引起来,其中HDR为1表示第一行为字段,为0表示第一行不是字段
IMEX其值有0、1、2三种,分别代表导出、导入、混合模式
下面含有代码的文本:格式可能已经被百度自动换行,拷贝使用时候要稍微调整一下
本列中将取得名称存在了列表类型中
Public Function ObtainSheetName(ByVal bookpath As String) As ListBox
'要求引用Imports System.Data.OleDb
'Microsoft.ACE.OLEDB.12.0 用于OFFICE2007(含2007)以上
'Microsoft.Jet.OLEDB.4.0用于office2003(含2003)一下
Dim lst As New ListBox
Dim Str As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & bookpath & _
";Extended Properties=""Excel 8.0;HDR=No;IMEX=1;"""
Dim con As New OleDbConnection(Str)
con.Open()
'返回Excel的架构,包括各个sheet表的名称,类型,创建时间和修改时间等
Dim dt As DataTable = _
con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"})
con.Close()
For k As Integer = 0 To dt.Rows.Count - 1
Str = dt.Rows(k)("TABLE_NAME").ToString
'如果最后一个字符是$,说明是sheet名称
If Str Like "*$*" Then '
Str = Str.Replace(" ", "") '去掉单引号
Str = Str.Replace("$", "") '去掉$
lst.Items.Add(Str)
End If
Next k
ObtainSheetName = lst
End Function



