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

标签 c# .net 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);

第三个参数是只读的,我指定为 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/

相关文章:

c# - T4。错误 : An expression block evaluated as Null

c# - string.Replace 不适用于报价

excel函数获取另一个单元格的值

c# - ReSharper 在 "else"上自动插入大括号

c# - 如何下载并安装 32feet.net api

c# - 如何使用 Orchard 使用的程序集的新版本

vba - 每个循环停止

c# - 如何重新打开或重置WebBrowser控件?

c# - 创建表时应该使用什么SqlDbType?

vba - Excel 浏览文件夹并自动将数据输入到默认模板中