我正在编写一个应用程序,它必须将值写入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);
第三个参数是只读的,我将其指定为false。但仍然
myExcelWorkbooks.readOnly
只显示True
。有人能帮我摆脱这一切吗?
最佳答案
如果您在C 4或以上,请执行以下操作:
var myExcelApp = new Excel.Application()
{
Visible=false
};
Excel.Workbook myExcelWorkbooks = myExcelApp.Workbooks.Open(Filename: @"F:\oo\bar.xlsx", ReadOnly: false);
完成后,请确保执行以下操作:
myExcelWorkbooks.Save();
myExcelWorkbooks.Close();
myExcelApp.Quit();
Marshal.ReleaseComObject(myExcelApp);
如果您还没有执行第二部分,请打开任务管理器并终止excel.exe的每个实例(或重新启动计算机),然后重试第一部分。
如果Excel文件被另一个进程锁定,则Excel将始终以只读模式打开工作簿。如果您一直在处理互操作,并且没有在之后终止excel进程,那么这可以解释您看到的行为。因此,您的代码和uac设置可能是好的,所以我会摆脱任何excel实例运行之前,进一步改变您的代码,或与uac玩。