C# 使用C从打开的Excel工作表中获取当前单元格值#

C# 使用C从打开的Excel工作表中获取当前单元格值#,c#,excel-interop,C#,Excel Interop,我有一个打开的Excel实例,它已经通过COM进程连接到,我已经更改了其中一个单元格的值。在C#中,我无法连接到工作表,但在python中我可以 工作Python代码: import xlwings as xw wb = xw.Book('c:/users/me/Desktop/mysheet.xlsx') sheet = wb.sheets['Sheet1'] print(sheet.range('B1').value) # returns the current value 非工作C#代码

我有一个打开的Excel实例,它已经通过COM进程连接到,我已经更改了其中一个单元格的值。在C#中,我无法连接到工作表,但在python中我可以

工作Python代码:

import xlwings as xw
wb = xw.Book('c:/users/me/Desktop/mysheet.xlsx')
sheet = wb.sheets['Sheet1']
print(sheet.range('B1').value) # returns the current value
非工作C#代码:

有没有办法让C#连接到这个工作表,因为它已经通过另一个软件产品的COM自动化打开了

关于GetActiveObject的大多数在线讨论都是与Excel的特定实例对话。如果有多个实例正在运行,我有一个相反的问题,一个Excel实例和多个试图连接到它的应用程序

Workbook wb = System.Runtime.InteropServices.Marshal.BindToMoniker(@"c:\users\me\Desktop\mysheet.xlsx") as Workbook;
应获取工作簿,即使它已在Excel中打开或未打开


您的代码在我的设置中运行良好。我使用Excel 2016(桌面版,而非Office 365)获取当前值。我尝试过使用和不使用
xlApp.Visible=true,这没有什么区别。您正在运行哪个版本的Excel?是否有任何其他进程可能会干扰?是的,有另一个进程正在写入工作表,可能也使用COM,在我的测试中发现有另一个Excel实例正在返回“保存”值。关闭第二个实例意味着我现在无法再连接到我想要的工作表(.ActiveWorkbook为空)。有没有办法打开与工作表的“共享”连接?
Workbook wb = System.Runtime.InteropServices.Marshal.BindToMoniker(@"c:\users\me\Desktop\mysheet.xlsx") as Workbook;