You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过OleDb按Excel工作表顺序获取工作表名称?

按Excel实际顺序获取工作表名称的解决方案

OLEDB驱动的GetSchema或GetOleDbSchemaTable方法返回的工作表名称默认是按字母排序的,无法直接通过OLEDB获取工作表的实际显示顺序。以下是两种可行的替代方案:

方案一:使用Excel Interop

需要先引用Microsoft.Office.Interop.Excel组件(可通过NuGet安装或添加COM引用),直接操作Excel对象模型获取按顺序排列的工作表:

Imports Microsoft.Office.Interop.Excel

Module Module1
    Sub GetSheetsInOrder(ByVal filePath As String)
        Dim excelApp As Application = New Application()
        Dim workbook As Workbook = Nothing
        Try
            workbook = excelApp.Workbooks.Open(filePath)
            For Each worksheet As Worksheet In workbook.Worksheets
                Console.WriteLine(worksheet.Name) ' 按实际顺序输出工作表名
            Next
        Catch ex As Exception
            Console.WriteLine($"出错:{ex.Message}")
        Finally
            If workbook IsNot Nothing Then
                workbook.Close(SaveChanges:=False)
                System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook)
            End If
            excelApp.Quit()
            System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp)
        End Try
    End Sub
End Module

注意:此方法要求运行环境安装Microsoft Office,且需注意释放COM对象避免进程残留。

方案二:使用EPPlus(推荐,无需安装Office)

EPPlus是开源的Excel操作库,可通过NuGet安装,轻量且适合服务器环境:

Imports OfficeOpenXml

Module Module1
    Sub GetSheetsInOrder(ByVal filePath As String)
        Using package As New ExcelPackage(New FileInfo(filePath))
            For Each worksheet In package.Workbook.Worksheets
                Console.WriteLine(worksheet.Name) ' 按实际顺序输出工作表名
            Next
        End Using
    End Sub
End Module

注意:EPPlus 5.x及以上版本需要商业授权用于非开源项目,若使用免费版本可选择4.x版本。

内容的提问来源于stack exchange,提问作者Gefallenus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 23:22:32