繁体   English   中英

尝试通过 C# 互操作保存只读 Excel 文件时出错

[英]Error when trying to save read-only Excel file through C# Interop

我想在 WPF 中保存一个受密码保护的 Excel 文件,其中 1 个单元格通过Microsoft Interop进行了更改。

我试图做的是在禁用只读模式的情况下打开 Excel 文件。
我尝试通过编写以下代码来实现它:

Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(excelFilename, Type.Missing, false, Type.Missing,
                password, password, true, Type.Missing, Type.Missing, true, Type.Missing,
                Type.Missing, Type.Missing, Type.Missing, Type.Missing);

请忽略任何涉及密码的安全问题,因为此代码仅用于说明目的。

.Open()方法中的第三个参数指定ReadOnly object,设置为 false。
.Open()方法中的第七个参数指定IgnoreReadOnlyRecommended object,设置为 true。
通过这样做,我会认为 Excel 文档会在没有启用只读模式的情况下打开,但事实并非如此。

我还通过编写以下代码禁用了通常向用户显示的 Excel 警报:

xlApp.DisplayAlerts = false;

每次我运行这段代码时:

xlWorkbook.SaveAs(excelFilename);

我得到以下异常:
system.runtime.interopservices.comexception 'cannot access read-only document...'

你的代码是正确的。

如果您使用的是 Excel 2019(不确定其他版本),请尝试以下操作:

在功能区菜单的“审阅”选项卡上打开 Excel 文件 -> go -> select “共享经验工作簿” ->检查新的共同创作功能 - 使用旧的共享体验工作簿。

就我而言,这解决了问题。

我认为这是使用 Office Interop 的众多缺点之一。 如果您可以选择,我建议您不要使用它,因为总有一天您会遇到其他此类问题,如果不是更糟的话。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM