在C#中访问打开的Excel工作簿

Jon*_*son 5 c# excel ms-office office-interop excel-interop

我需要访问已经打开的excel文件.我想只是检查一下.Workbooks它会存在的属性,但事实并非如此.获取对打开的工作簿的引用的正确方法是什么?

var app = new Microsoft.Office.Interop.Excel.Application();

// the count is 0 =(
app.Workbooks.Count == 0;
Run Code Online (Sandbox Code Playgroud)

编辑

我可以通过...获得Excel应用程序的引用

app = (Excel.Application)Marshal.GetActiveObject("Excel.Application");
Run Code Online (Sandbox Code Playgroud)

app.Workbooks.Count仍然是0为什么它不能获得对已打开的工作簿的引用?

Arm*_*rat 6

而不是实例化新实例,检查现有实例:

try
{
  Microsoft.Office.Interop.Excel.Application app = 
      System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
}
catch
{
  // Excel is not running.
}
Run Code Online (Sandbox Code Playgroud)