如何打开具有只读保护的Excel文件?

时间:2012-01-18 07:33:34

标签: c# winforms excel vsto office-interop

我在C#WinForm应用程序中添加了对Microsoft.Office.Interop.Excel.dll的引用并使用DSO FRAMER CONTROL打开了Excel文件。但是我想用只读保护打开我的excel文件。我已经成功地为WORD Application做了这个

Word.Document wordDoc = (Word.Document)axFramerControl1.ActiveDocument;
Word.Application wordApp = wordDoc.Application;
wordDoc.Protect(Word.WdProtectionType.wdAllowOnlyReading);

同样我想为Excel做这项工作。但我无法以这种方式保护Excel文件。

string path = "C:\\test-wb.xlsx";
axFramerControl1.Open(path, true,"excel.sheet", "", "");

Excel._Workbook excelDoc   =(Microsoft.Office.Interop.Excel._Workbook)axFramerControl1.ActiveDocument;
Excel.Application excelApp =excelDoc.Application;
//What code should i write to protect Excel Workbook with read - only.
excelDoc.Protect(misval, true, misval);//It is not working.

2 个答案:

答案 0 :(得分:11)

使用第三个参数(Open)= ReadOnly调用true方法。

请参阅MSDN documentation

<强>只读
可选对象。如果为True,则以只读模式打开工作簿。

答案 1 :(得分:-1)

WorkBook类有一个Protect方法,类似于(但不完全相同)Word支持的方法。我找不到COM / interop文档,但VSTO文档涵盖相同的基础,方法签名是相同的:

Protect

  

保护工作簿,使其无法修改。

public virtual void Protect (
    [OptionalAttribute] Object Password,
    [OptionalAttribute] Object Structure,
    [OptionalAttribute] Object Windows
)

(这一切都假设你想要实现的是保护文档,因为这就是Word代码所做的,而不是打开文档只读,这就是你的叙述似乎在说,在这种情况下, @gdoron's answer更合适