如何列出所有打开的 Excel 个工作簿
How to list all open Excel workbooks
我正在使用 .net 4.7.1 编写一个 c# 控制台应用程序。我的计算机上有几个打开的 Excel 工作簿。我正在尝试列出我计算机上所有打开的 Excel 工作簿。
我查看了几个 SO 帖子并将这段代码放在一起应该列出我计算机上所有打开的 Excel 工作簿但是当我 运行 代码
none 个打开的 Excel 个工作簿被列出。
using System;
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Excel;
namespace ExcelWorkbooks
{
class Program
{
static void Main(string[] args)
{
Application oXL = new Microsoft.Office.Interop.Excel.Application();
oXL = (Application)Marshal.GetActiveObject("Excel.Application");
Console.WriteLine("starting");
foreach (Microsoft.Office.Interop.Excel.Workbook blah in oXL.Workbooks)
{
Console.WriteLine(blah.Name.ToString());
}
Console.WriteLine("ending");
Console.ReadLine();
}
}
}
输出应该是
starting
there should be a list of open Excel workbooks here
ending
但这是输出结果
starting
ending
如果有人能指出我需要 added/subtracted 的正确方向或更改我的代码以便它列出我计算机上所有打开的 Excel 工作簿,我将不胜感激.提前致谢。
编辑:我正在玩这个,我关闭了 2 个打开的 Excel 工作簿。然后我查看任务管理器,发现即使在我关闭所有 Excel 工作簿后,仍有大约 10 个“EXCEL”进程仍在 运行ning。我关闭了所有“EXCEL”进程,然后再次打开了 2 个 Excel 工作簿。现在上面的代码列出了 2 个打开的 Excel 工作簿。所以,我想这个问题已经有所改变,为什么当我只有 2 个打开的工作簿时会有 10 个“EXCEL”进程 运行ning,更重要的是,我应该如何处理这个问题,如果有我可以处理额外的“EXCEL”进程,因此它将显示打开的 Excel 工作簿。谢谢
要列出当前 Excel 个实例工作簿名称,只需更改:
Application oXL = new Microsoft.Office.Interop.Excel.Application();
oXL = (Application)Marshal.GetActiveObject("Excel.Application");
至:
Application oXL = (Application)Marshal.GetActiveObject("Excel.Application");
您可能想要添加一些 Try/Catch 块来处理没有 Excel 可用实例的情况
我正在使用 .net 4.7.1 编写一个 c# 控制台应用程序。我的计算机上有几个打开的 Excel 工作簿。我正在尝试列出我计算机上所有打开的 Excel 工作簿。
我查看了几个 SO 帖子并将这段代码放在一起应该列出我计算机上所有打开的 Excel 工作簿但是当我 运行 代码 none 个打开的 Excel 个工作簿被列出。
using System;
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Excel;
namespace ExcelWorkbooks
{
class Program
{
static void Main(string[] args)
{
Application oXL = new Microsoft.Office.Interop.Excel.Application();
oXL = (Application)Marshal.GetActiveObject("Excel.Application");
Console.WriteLine("starting");
foreach (Microsoft.Office.Interop.Excel.Workbook blah in oXL.Workbooks)
{
Console.WriteLine(blah.Name.ToString());
}
Console.WriteLine("ending");
Console.ReadLine();
}
}
}
输出应该是
starting
there should be a list of open Excel workbooks here
ending
但这是输出结果
starting
ending
如果有人能指出我需要 added/subtracted 的正确方向或更改我的代码以便它列出我计算机上所有打开的 Excel 工作簿,我将不胜感激.提前致谢。
编辑:我正在玩这个,我关闭了 2 个打开的 Excel 工作簿。然后我查看任务管理器,发现即使在我关闭所有 Excel 工作簿后,仍有大约 10 个“EXCEL”进程仍在 运行ning。我关闭了所有“EXCEL”进程,然后再次打开了 2 个 Excel 工作簿。现在上面的代码列出了 2 个打开的 Excel 工作簿。所以,我想这个问题已经有所改变,为什么当我只有 2 个打开的工作簿时会有 10 个“EXCEL”进程 运行ning,更重要的是,我应该如何处理这个问题,如果有我可以处理额外的“EXCEL”进程,因此它将显示打开的 Excel 工作簿。谢谢
要列出当前 Excel 个实例工作簿名称,只需更改:
Application oXL = new Microsoft.Office.Interop.Excel.Application();
oXL = (Application)Marshal.GetActiveObject("Excel.Application");
至:
Application oXL = (Application)Marshal.GetActiveObject("Excel.Application");
您可能想要添加一些 Try/Catch 块来处理没有 Excel 可用实例的情况