打开具有c#完全访问权限的Excel工作表

Vas*_*h91 4 .net c# excel

我正在编写一个应用程序,必须将值写入Excel电子表格中的单元格.我可以打开工作簿,但它始终以只读模式打开.我的代码是

myExcelApp = new Excel.ApplicationClass();
myExcelApp.Visible = false;
Excel.Workbook myExcelWorkbooks = myExcelApp.Workbooks.Open(fileName, misValue, **false**, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue);
Run Code Online (Sandbox Code Playgroud)

第三个参数是只读的,我已将其指定为false.但仍然myExcelWorkbooks.readOnly只显示True.

有人可以帮我解决这个问题吗?

JMK*_*JMK 11

如果您使用的是C#4或更高版本,请执行以下操作:

var myExcelApp = new Excel.Application()
    {
        Visible=false
    };

Excel.Workbook myExcelWorkbooks = myExcelApp.Workbooks.Open(Filename: @"F:\oo\bar.xlsx", ReadOnly: false);
Run Code Online (Sandbox Code Playgroud)

完成后,请确保执行此操作:

myExcelWorkbooks.Save();
myExcelWorkbooks.Close();

myExcelApp.Quit();

Marshal.ReleaseComObject(myExcelApp);
Run Code Online (Sandbox Code Playgroud)

如果您还没有执行第二部分,请打开任务管理器并终止EXCEL.EXE的每个实例(或重新启动计算机),然后再次尝试第一部分.

如果Excel文件被另一个进程锁定,Excel将始终以只读模式打开工作簿.如果你一直在搞乱互操作,而不是事后杀死Excel过程,这可以解释你所看到的行为.因此,您的代码和UAC设置可能没问题,因此在更改代码或使用UAC之前,我将删除所有运行的Excel实例.

  • 喜欢F驱动器创建Foo Bar作为文件路径XD (3认同)