我在操作Excel的时候要new Excel.Application()
操作Excel完毕后又要把这个Excel.Application给关闭掉
这样会往复操作内存,如在内存中打开Excel.exe和关闭Excel.exe,影响速度.
请问如何能够保持住Excel.exe进程以供使用?
有示例代码更好..
或者您有更好的操作Excel的方案,谢谢各位留言指点.
操作Excel完毕后又要把这个Excel.Application给关闭掉
这样会往复操作内存,如在内存中打开Excel.exe和关闭Excel.exe,影响速度.
请问如何能够保持住Excel.exe进程以供使用?
有示例代码更好..
或者您有更好的操作Excel的方案,谢谢各位留言指点.
解决方案 »
- 对access执行删除操作出错,急! 速结
- 『20分』C# 怎么通过代码修改Access数据库日期类型字段的格式?
- 请问一个关于richTextBox修改的问题
- 紧急求救~Application has generated an exception that could not be handled.
- Form的最小化问题?
- 哎,还有什么问题啊。真是不懂
- 如何从另一个窗体上按钮对当前窗体的DataGrid进行更新?
- 求Visual FoxPro学习!!!
- webservice返回给我一个对象,对象主要包括两个属性,一个是文件类型,一个是文件的内容,那吗我怎吗才能在网页上显示这个文件的内容??
- 属性是否能多态?
- 关于ListView 的问题
- vsts 单元测试 如何读取web.config的值
如果并发的话.....
等更好的方法..
如果你不是经常使用excel,就可以采用这种方法。。关注!
Excel.Application mExcel = new Excel.ApplicationClass();
我再加个book,那么mExcel.ActiveWorkbook是哪一个....
我如何在最后一次并发处理结束后,关闭mExcel?或者干脆不关闭它,但是静态的mExcel的生存周期貌似已结束..
不久后进行下次处理进程中已存在Excel.exe,如何给mExcel赋值.....
此时该如何给mExcel赋值?把以前的进程关掉,重新new一个?
感谢楼上的各位细心指点,你们的回复未能一一致谢但是都对我有莫大的帮助~
我的理解是 你觉得你调用excel后不希望excel的线程消失
但是事实上是 如果你用COM编程的话 excel线程是不会自动消失的
不信你自己可以去试试。
每次调用excel都会生出新的一个excel线程。
我在操作Excel的时候,用户会并发多个请求,我在第一次实例化COM组件,然后让全局变量存储它,进行下一步操作,
此次并发完毕如果我没有quit(),进程中会保留Excel.exe,但是全局变量生存周期已过会被回收.
那么再下一次请求时,如何调用系统中已存在的Excel.exe给我的全局变量赋值?而不是重新实例化..
这个excel进程关不掉的问题还没发现什么好的解决方法。只能通过扫描进程,但是无法判断是用户的还是程序的,所以也不好用
除非程式之间进行通讯来操作同一个excel application对象.即: 程式A --> New一个excel application对象 然后程式A不关闭,等待接收其他程式与其交互
(这样所有与其交互的程式取得excel application对象都是同一个,lz需要把excel当数据库使用?)
程式B--交互提交请求-->程式A--操作EXCEL,并返回EXCEL对象-->程式B
这样做弊大于利,增加复杂度,速度也不见得快,而且会造成数据干扰.还是直接New一个对象吧.
在下B/S结构,用户提供数据,我给他做一个精美的Excel表格,现在的以new Application多进程处理并发会在内存中留下一些关不掉的Excel.exe很闹眼子
我想让Excel的COM组件做成个服务在内存中随其他进程如IIS一起生存,并留下侦听来处理事务。的确说比较像数据库。
private void killExcelThread()
{
System.Diagnostics.Process[] lo_Process = System.Diagnostics.Process.GetProcessesByName("EXCEL.");//获取所有的名为EXCEL的进程
foreach (System.Diagnostics.Process Process in lo_Process)
{
if (Process.MainWindowTitle == "")
{
Process.Kill();// Kill those excel thread opened by the .net.
}
} }
#endregion
try
{
App = Marshal.GetActiveObject("Excel.Application") as WPS.Application;
}
catch (Exception ex)
{
App = new Excel.Application();
}
如果有进程运行就不会再创建实例了。
的确是那样的
SERVER端产EXCEL进程很烦人 关闭不掉的话会把CPU全部吃掉的
额。。非到万不得已还是不要Kill Process
如果Kill,并发用户的怨念谁来承受
谢谢你给我提供的方法,可惜用不上。