假设我打开了一个名为“DataSheet.xls”的Excel文件。如何使用c#?
删除该Excel文件答案 0 :(得分:5)
using Excel = Microsoft.Office.Interop.Excel;
(...)
var app = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
// I have english excel, but another culture and need to use english culture to use excel calls...
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
app.Workbooks["DataSheet"].Close(false, false, false);
答案 1 :(得分:2)
单个进程很可能包含多个打开的工作簿。特别是因为Excel在从Explorer,Outlook等打开文件时更喜欢重用现有实例,而不是为每个工作簿创建新进程。
更不用说杀死进程将要求你1)关闭主窗口,这将提示是否有未保存的更改或2)强行终止进程,这可能会导致Excel在下次启动时显示其崩溃恢复选项它
最佳操作方法是使用Excel COM API关闭工作簿。您可以使用Marshal.GetActiveObject方法获取正在运行的Excel实例,然后参考Office开发人员参考,以获取有关如何在不提示的情况下关闭特定命名工作簿的详细信息。
答案 2 :(得分:1)
Process
类允许您终止进程。您可以检查所有正在运行的excel.exe进程,获取进程的主窗口句柄,检查该窗口的标题是否包含XLS文件的名称,然后终止该窗口的进程。
否则,您可以使用Office COM类与Excel通信。这也可能允许您关闭打开的工作簿。
答案 3 :(得分:0)
副手没有这样的代码。但一般来说,过去我会用几个api来做这件事。首先,你得到窗口句柄(hWnd),然后你将使用带有wm_close参数的sendmessage api调用。
这就是我能记住的一切 - 因为我必须做那种事情已经大约10年了,所以从那时起该领域可能已经改变了:)