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

能否使用EPPlus打开受密码保护的.xls文件?现有方法仅支持.xlsx

嘿,我来帮你理清楚这个问题~

关于EPPlus打开密码保护.xls文件的问题

首先直接给你结论:EPPlus并不支持处理旧式的.xls格式文件——它是专门针对基于Open XML标准的.xlsx/.xlsm等新式Excel格式开发的库,完全不兼容.xls这种旧版BIFF格式,所以你的代码能搞定.xlsx但搞不定.xls是完全正常的情况。

为什么会这样?

.xls是微软早期Excel使用的二进制格式,和.xlsx的XML结构完全不同,EPPlus的底层设计就是围绕Open XML规范来的,没有适配旧格式的能力,自然没法读取密码保护的.xls文件。

可行的替代方案

如果你需要处理密码保护的.xls文件,推荐用下面两个常用的.NET库:

方案1:使用NPOI(无需安装Office)

NPOI是一个开源的.NET库,支持多种Office格式(包括.xls和.xlsx),也能处理密码保护的文件,而且不需要依赖本地安装的Office。给你写个VB.NET的示例:

Imports NPOI.HSSF.UserModel
Imports NPOI.SS.UserModel
Imports System.IO

' 读取密码保护的.xls文件
Using fs As New FileStream("C:\Temp\test.xls", FileMode.Open, FileAccess.Read)
    ' 第二个参数传入文件密码
    Dim workbook As IWorkbook = WorkbookFactory.Create(fs, "test")
    Dim targetSheet As ISheet = workbook.GetSheet("Alles")
    
    If targetSheet IsNot Nothing Then
        ' NPOI的行和列索引从0开始,对应Excel的A1就是第0行第0列
        Dim targetCell As ICell = targetSheet.GetRow(0)?.GetCell(0)
        If targetCell IsNot Nothing Then
            Debug.Print(targetCell.ToString())
        End If
    End If
End Using

方案2:使用Microsoft.Office.Interop.Excel(需安装Office)

如果你的运行环境已经安装了Microsoft Office,可以用Interop组件来操作,但这种方式依赖Office安装包,部署起来会麻烦一些。示例代码如下:

Imports Microsoft.Office.Interop.Excel

Dim excelApp As New Application()
' Open方法的Password参数传入文件密码
Dim workbook As Workbook = excelApp.Workbooks.Open("C:\Temp\test.xls", Password:="test")
Dim targetSheet As Worksheet = workbook.Sheets("Alles")

If targetSheet IsNot Nothing Then
    Debug.Print(targetSheet.Range("A1").Value.ToString())
End If

' 务必手动释放COM资源,避免Excel进程残留
workbook.Close(SaveChanges:=False)
excelApp.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(targetSheet)
System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook)
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp)

额外建议

如果条件允许,建议尽量把.xls文件转换成.xlsx格式,这样后续用你熟悉的EPPlus处理会更省心,也能避免旧格式带来的各种兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:17:57