最近在做一个c#生成word的功能、调用了微软自带的COM组件。 生成完以后发现有一个winword.exe无法关闭、调试或修改代码都没有搞明白。 遂强制关闭进程了。
System.Diagnostics.Process[] myPs; myPs = System.Diagnostics.Process.GetProcesses(); foreach (System.Diagnostics.Process p in myPs) { if (p.Id != 0) { string myS = "WINWORD.EXE" + p.ProcessName + " ID:" + p.Id.ToString(); try { if (p.Modules != null) if (p.Modules.Count > 0) { System.Diagnostics.ProcessModule pm = p.Modules[0]; myS += "/n Modules[0].FileName:" + pm.FileName; myS += "/n Modules[0].ModuleName:" + pm.ModuleName; myS += "/n Modules[0].FileVersionInfo:/n" + pm.FileVersionInfo.ToString(); if (pm.ModuleName.ToLower() == "winword.exe") p.Kill(); } } catch { } finally { } } }
另生成word时还有一个问题:每次生成的word最后都会有一个空页、想办法删除、查阅了网上,但是拿过来都无法解决、遂请教各位有没有什么办法。
Word.Range range1, range2; // 跳转种类 object objWhat = Word.WdGoToItem.wdGoToPage; // 跳转位置 object objWhich = Word.WdGoToDirection.wdGoToLast; // 转向最后一页 WordApp.Selection.GoTo(ref objWhat, ref objWhich, ref Nothing, ref Nothing); // Range取得 range1 = WordApp.Selection.Range; range2 = WordApp.ActiveDocument.Range(ref Nothing, ref Nothing); object start = range1.Start; object end = range2.End; // 删除最后一页 WordApp.ActiveDocument.Range(ref start, ref end).Delete(ref Nothing, ref Nothing);
这个是从网上找到的。但是在我这里无法起到效果、我是先生成word、往word插入数据完成以后SaveAs()前再执行这一段代码。求指导。
- 2楼LarryIsTaken
- https://technet.microsoft.com/en-us/library/ff730962.aspx
- 1楼马洪彪
- 结束word的话,也可以调用Command,kill task