使用C#中的互操作以独占模式打开一个excel文件

在我的应用程序中,我希望能够打开一个已经存在的excel文件,并向这个文件添加信息。 我使用Microsoft Interop库。 我注意到,如果您使用添加,然后Saveas创build一个新的电子表格,您可以将文件设置为独占模式,直到您closuresExcel应用程序。

但是,我还没有find一种方法来打开一个现有的文件时做同样的事情。 我想这样做的原因是因为,如果我打开Excel文件,而我的应用程序是打开的,那么我得到一个exception。 我认为,当我用excel打开excel文件时,它是以独占模式自动打开的。

我虽然打开文件,然后使用saveas,但它没有奏效。

private object missing=Type.Missing; workbook = workbooks.Open(excelfilename,missing, false, missing, missing, missing,missing,missing,missing,missing,false, missing,missing, missing, missing); workbook.SaveAs((String)excelfilename, missing, missing, missing, missing, missing, Excel.XlSaveAsAccessMode.xlExclusive, Excel.XlSaveConflictResolution.xlLocalSessionChanges, missing, missing, missing, missing); 

我在代码后面得到exception:

 Excel.Range testrange = sheet.get_Range(rangetext); 

我得到的exception是一个COMException,“从HRESULTexception:0x800401A8”。

看看Workbook类ExclusiveAccess属性: http : //msdn.microsoft.com/en-US/library/microsoft.office.tools.excel.workbook.exclusiveaccess(v=vs.80).aspx

你可以去这篇文章的完整例子,如何打开一个Excel文件/添加新工作表/获取范围和设置属性使用Microsoft互操作库