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

使用Syncfusion XlsIO加密Excel后读取报错:不支持强加密算法

Excel加密文件读取报错:Strong encryption algorithms are not supported

问题背景

创建Excel文件时,通过以下代码设置工作表和工作簿保护密码,并指定版本为Excel97-2003:

workbook.Worksheets[1].Protect("123");
workbook.Protect(false, true, "123");
workbook.Version = ExcelVersion.Excel97to2003;

读取该加密文件时,使用初始代码:

ExcelEngine excelEngine = null;
IApplication application = null;
IWorkbook workbook = null;
IWorksheet sheet = null;
// 省略其他初始化代码
excelEngine = new ExcelEngine();
application = excelEngine.Excel;
workbook = excelEngine.Excel.Workbooks.Open(fileLocation, ExcelOpenType.Automatic);

运行时抛出错误:Strong encryption algorithms are not supported(不支持强加密算法)

已尝试的无效方案

  • 带密码参数的Open方法调用:
workbook = excelEngine.Excel.Workbooks.Open(fileLocation,ExcelParseOptions.Default,false,"123",ExcelOpenType.Automatic);
  • 绑定OnPasswordRequired事件传递密码:
application.OnPasswordRequired += application_OnPasswordRequired;
void application_OnPasswordRequired(object sender, PasswordRequiredEventArgs e)
{
    e.NewPassword = "123";
}

解决方法

1. 调整创建时的加密兼容设置

问题出在创建文件时的workbook.Protect调用,默认参数可能触发了Excel97-2003不支持的强加密。替换为明确指定兼容旧版本的保护方式:

// 用指定保护类型的重载替代原调用,确保加密兼容Excel97-2003
workbook.Protect(ExcelProtectionType.All, "123", "123");
// 保持工作表保护和版本设置不变
workbook.Worksheets[1].Protect("123");
workbook.Version = ExcelVersion.Excel97to2003;

2. 读取时强制指定旧版本打开类型

读取文件时,明确指定打开类型为Excel97to2003,让引擎使用对应版本的加密解析逻辑:

workbook = excelEngine.Excel.Workbooks.Open(
    fileLocation,
    ExcelParseOptions.Default,
    false,
    "123",
    ExcelOpenType.Excel97to2003
);

3. 升级Syncfusion Excel库版本

如果使用的是旧版Syncfusion组件,可能存在加密兼容bug,升级到最新稳定版通常能解决这类版本兼容问题。

内容的提问来源于stack exchange,提问作者the-a-monir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 22:20:27