有没有比Kill()更好的方法来存档相同的结果。当我杀死()一个Excel进程时,下次打开任何Excel工作表时,将打开“文档恢复”侧栏,这是我不想做的。比Process.Kill更好的选择()
回答
不确定这是否有助于Excel在Web浏览器中运行。如果你能抢的运行,你可以找到你想要关闭该工作簿的Excel实例...
try
{
// Grab a reference to an open instance of Excel
var oExcelApp =
(Microsoft.Office.Interop.Excel.Application)
Marshal.GetActiveObject("Excel.Application");
// Loop around the workbooks to find the one you want to close
for (int i = 1; i <= oExcelApp.Workbooks.Count; i++)
{
if (oExcelApp.Workbooks[i].Name == "requiredname")
oExcelApp.Workbooks[i].Close(Type.Missing, Type.Missing, Type.Missing);
}
// Clear up...
Marshal.FinalReleaseComObject(oExcelApp);
}
catch(Exception ex)
{
// Something went wrong...
}
谢谢安迪队友。 – Rabin 2010-07-02 09:46:45
添加.Net参考Microsoft.Office.Interop.Excel
。那么不妨看看下面的代码我拼凑:
Microsoft.Office.Interop.Excel.ApplicationClass _excel;
Microsoft.Office.Interop.Excel.Workbook _workBook;
private void Form1_Load(object sender, EventArgs e)
{
_excel = new Microsoft.Office.Interop.Excel.ApplicationClass();
_excel.Visible = true;
// Open the workbook
_workBook = _excel.Workbooks.Open(@"DataSheet.xls",
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);
}
private void btn_Close_Click(object sender, EventArgs e)
{
GC.Collect();
GC.WaitForPendingFinalizers();
_workBook.Close(false, Type.Missing, Type.Missing);
_excel.Quit();
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(_workBook);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(_excel);
}
我试过这个,但是下次我打开同一个文件时,它会给出错误。 – Rabin 2010-07-01 10:51:55
@Rabin - 提供一个代码示例。 – GenericTypeTea 2010-07-01 10:52:27
Btw,'Process.Close'是'Process.Dispose'的别名 - 它释放你的进程句柄副本而不是关闭正在运行的进程。 – 2010-07-01 11:06:04
由于这是Excel中,怎么样其实说话的Excel,并要求它关闭得好吗?你可以使用COM来做到这一点。
说我想很好地关闭DataSheet.xls。我如何使用COM来做到这一点?任何代码示例? – Rabin 2010-07-01 11:05:29
请参阅@ [GenericTypeTea](http://stackoverflow.com/users/44269/generictypetea)的[answer](http://stackoverflow.com/questions/3157051/better-option-than-process-kill/3157061 #3157061)。 – 2010-07-01 11:31:41
- 1. mysqli_ *是比mysql_ *更好的选择吗?
- 2. 有没有比CGContext更好的选择?
- 3. 更好的选择比backporting ICS HttpResponseCache
- 4. 对比唯一性的更好选择?
- 5. 有更好的选择sap.ui.commons.layout.MatrixLayout?
- 6. 更好的jQuery选择器
- 7. 的Java DB选择更好的性能比较
- 8. 选择*比选择列更快
- 9. 多进程同步 - 比信号量更好的选择?
- 10. 比从C#移植到Java更好的选择吗?
- 11. 样式组件CSS是比SASS还是LESS更好的选择?
- 12. 有没有比在SQL中使用FOR XML更好的选择
- 13. 与Dreamweaver相比,CodeIgniter是更好的选择吗?
- 14. 在emacs中,erlang是比ertel更好的选择吗?
- 15. 收集事件 - 有没有比BindingList(T)更好的选择?
- 16. For循环更新更好的选择
- 17. Process.Kill()的问题
- 18. 为什么选择Struts 2比Struts 1更好?
- 19. 更小和更好用bootstrap.css选择
- 20. 哪个mysql选择更好/更快?
- 21. 的QuickBasic:更好的选择INKEY $
- 22. 字符上的Hashmap的替代选择(即更好的选择)
- 23. 比CAPTCHA更好
- 24. DotNetOpenAuth有没有更好的选择?
- 25. 更改选择偏好的颜色
- 26. 为getpass函数时更好的选择
- 27. 有更好的设计选择吗?
- 28. ASP经典选择更好的路线
- 29. 404重定向或更好的选择
- 30. OpenXml有更好的选择吗?
你必须让Excel正常退出,并等待它退出,否则Excel将始终显示文件恢复窗口。 – GenericTypeTea 2010-07-01 10:53:02
您的代码是否首先启动Excel?如果是这样,那么一旦完成,这可能会提供关闭Excel的好方法。 – 2010-07-01 11:07:02
它在Web浏览器组件中打开,并且不允许用户手动更新工作表。 – Rabin 2010-07-01 11:20:40