使用 C# 从 open Excel sheet 获取当前单元格值
Get current cell value from open Excel sheet using C#
我有一个 Excel 的打开实例,它已经通过 COM 进程连接到 ,我已经更改了其中一个单元格的值。在 C# 中我无法连接到 sheet,但在 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();
有没有办法让 C# 连接到这个 sheet,因为它已经通过另一个软件产品的 COM 自动化打开?
网上关于GetActiveObject的讨论大多是跟Excel的具体实例对话,如果有多个实例运行,我有相反的问题,单个实例Excel 和多个尝试连接到它的应用程序。
Workbook wb = System.Runtime.InteropServices.Marshal.BindToMoniker(@"c:\users\me\Desktop\mysheet.xlsx") as Workbook;
应该获取工作簿,即使它已在 Excel 中打开或未打开。
我有一个 Excel 的打开实例,它已经通过 COM 进程连接到 ,我已经更改了其中一个单元格的值。在 C# 中我无法连接到 sheet,但在 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();
有没有办法让 C# 连接到这个 sheet,因为它已经通过另一个软件产品的 COM 自动化打开?
网上关于GetActiveObject的讨论大多是跟Excel的具体实例对话,如果有多个实例运行,我有相反的问题,单个实例Excel 和多个尝试连接到它的应用程序。
Workbook wb = System.Runtime.InteropServices.Marshal.BindToMoniker(@"c:\users\me\Desktop\mysheet.xlsx") as Workbook;
应该获取工作簿,即使它已在 Excel 中打开或未打开。