您的位置首页百科知识

vb.net不打开EXCEL取Sheet名称(子表名称)教程

vb.net不打开EXCEL取Sheet名称(子表名称)教程

的有关信息介绍如下:

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