我在使用Excel InterOp杀死Excel进程ID时遇到问题
第一种情况,当我在程序访问Excel中的数据时打开excel文件时,我打开excel文件的过程与访问程序的过程相同。因此,当我杀死进程ID时,我在使用程序时打开的另一个excel将被杀死。
第二种情况,如果我不杀死excel进程ID,当我尝试使用用户在程序访问之前打开的进程时,如果我的程序在用户关闭excel时运行,则我的程序将终止。
有没有一种方法可以使用新流程并且仅限制我的工作簿使用,如果其他excel已打开,我如何让它们由另一个流程打开?
这是我的代码,
public static void getExceltable()
{
Microsoft.Office.Interop.Excel.Application m_app;
m_app = new Microsoft.Office.Interop.Excel.Application();
m_app.DisplayAlerts = false;
object misValue = System.Reflection.Missing.Value;
string filename = Core.Class1.importPath;
Workbook workbook=m_app.Workbooks.Open(filename,Type.Missing,
Type.Missing,Type.Missing, Type.Missing,Type.Missing, Type.Missing,
Type.Missing,Type.Missing,Type.Missing,Type.Missing
,Type.Missing,Type.Missing,Type.Missing, Type.Missing);
Worksheet sheet = m_app.Sheets[1];
//// My Excel Process ////
workbook.Close();
int id;
GetWindowThreadProcessId(m_app.Hwnd, out id);
Process excelProcess = Process.GetProcessById(id);
m_app.Quit();
excelProcess.Kill();
}
最佳答案
您应在退出子办公室流程之前释放与互操作性关联的每个对象。这太痛苦了,所以我建议您找到替代解决方案。
关于c# - C#中的Excel流程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32449078/