' 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) = 阵列第一个元素
本文介绍了一个使用VB.NET读取Excel文件中Sheet名称的示例代码。通过ADO连接并利用OpenSchema方法获取Excel文件内的Sheet信息。
1972

被折叠的 条评论
为什么被折叠?



