VB.Net获取Excel中Sheet的名称

本文介绍了一个使用VB.NET读取Excel文件中Sheet名称的示例代码。通过ADO连接并利用OpenSchema方法获取Excel文件内的Sheet信息。

' Imports 陈述式

' 匯入在所参考的专案和组件中定义的命名空间( Namespace ) 或程式设计项目。

 

Imports System.Runtime.InteropServices

 

' System.Runtime.InteropServices 命名空间

' 提供各种支援COM Interop 和平台叫用服务的成员。与Unmanaged 程式码互通。

 

Public Class Form1

 

    Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click

        ' 取得 Excel 档案中第一个 Sheet 名称

        MessageBox.Show(Get_Xls_1st_Sht("C:/Book1.xls"))

    End Sub

 

    Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click

        ' 取得 Excel 档案中所有 Sheet 名称

        Dim ShtAry As Object = Get_Xls_Sht("C:/Book1.xls")

        For Each Sht As Object In ShtAry

            MessageBox.Show(Sht)

        Next

    End Sub

 

    Private Function Get_Xls_Sht(ByVal XlsFile As String) As Object ' 取得 Excel 档案中第一个 Sheet 名称

        Dim cnXls As Object = Activator.CreateInstance(Type.GetTypeFromProgID("ADODB.Connection"))

        cnXls.Open("Provider=MSDASQL.1;DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & XlsFile)

        Get_Xls_Sht = cnXls.OpenSchema(4).GetRows(-1, 1, 2) ' 传回一个二维阵列。

        Marshal.ReleaseComObject(cnXls)

    End Function

 

    Private Function Get_Xls_1st_Sht(ByVal XlsFile As String) As String ' 取得 Excel 档案中所有 Sheet 名称

        Dim cnXls As Object = Activator.CreateInstance(Type.GetTypeFromProgID("ADODB.Connection")) ' 1

        cnXls.Open("Provider=MSDASQL.1;DRIVER={Microsoft Excel Driver (*.xls)};DBQ=" & XlsFile) ' 2

        Get_Xls_1st_Sht = cnXls.OpenSchema(4).GetRows(-1, 1, 2)(0, 0) ' 3

        Marshal.ReleaseComObject(cnXls) ' 释放 COM 物件所使用的资源

    End Function

 

End Class

 

' 1 :

'   ADODB.Connection ADO 连线物件之 ProgID 

'   Type.GetTypeFromProgID 方法: 根据 ProgID 取得物件的型别

 

' 2 :

'   Open 方法 (ADO 连接) : 开启对资料源的连接。

'   语法: connection.Open ConnectionString

 

' 3 :

'   OpenSchema 方法 (ADO) : 从提供者取得资料库结构描述资讯。

'   语法: recordset = connection.OpenSchema(QueryType)

'   4 = adSchemaColumns

 

'   GetRows 方法 (ADO) : Recordset 物件中取得多个资料录,将其放入阵列中。

'   语法: Array = recordset.GetRows(Rows, Start, Fields)

 

'   Rows   选择性参数。表示要取得资料录个数的 Long 运算式。

'   -1 = adGetRowsRest (预设值)

 

'   Start   选择性参数。评定 GetRows 动作应该开始之资料录书籤。

'   1 = adBookmarkFirst 由第一笔资料录开始。

 

'   Fields   选择性参数。表示单一资料栏名称或序数位置,或资料栏名称阵列或序数位置号码。

'   2 = Table_Name

 

'   GetRows 会传回一个二维阵列。

'   (0, 0) = 阵列第一个元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值