我有一个开放的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#代码:
var xlApp = (Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
Workbook wb = xlApp.ActiveWorkbook; // returns null
Worksheet excelSheet = wb.ActiveSheet;
string test = excelSheet.Cells[1, 2].Value.ToString();
鉴于已经通过另一软件产品的COM自动化打开了C#,是否有办法使C#连接到此工作表?
如果有多个正在运行的实例,关于GetActiveObject的大多数在线讨论都是与Excel的特定实例进行对话,而我遇到了相反的问题,即一个Excel实例和多个试图与其连接的应用程序。
Workbook wb = System.Runtime.InteropServices.Marshal.BindToMoniker(@"c:\users\me\Desktop\mysheet.xlsx") as Workbook;
即使工作簿是否已经在Excel中打开,也应该获取该工作簿。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句