我正在编写一个应用程序,它必须向 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 设置可能没问题,因此在进一步更改您的代码或尝试使用 UAC 之前,我会删除所有正在运行的 Excel 实例。
关于c# - 在 C# 中打开具有完全访问权限的 Excel 工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14277474/