关于C#中操作EXCEL后,关闭对象但EXCEL进程仍然存在的解决办法.

问题描述

自己之前一直被这个问题困扰,也在网上找了很多资料,大部分都是用杀死进程的方法来解决,个人觉得这个太影响代码美观了.今天偶然发现了解决办法.给大家共享一下.现象:我在C#中,需要从EXCEL导入或者导出数据,当导入导出结束后,使用excelApp.Quit()关闭EXCEL对象,但系统进程中仍然存在EXCEL进程.并没有关闭.原因:其实excelApp.Quit();方法是可以正确的释放EXCEL进程的,我们导入导出EXCEL时,普遍方法是代码后台处理,前台并隐藏EXCEL界面,也就是excelApp.Visible=false(这是默认值,不设置的话也是False),当调用excelApp.Quit()时,EXCELE会弹出个对话框,问你是否保存,而excelApp.Visible=false时,保存对话框也一并隐藏掉了,所以EXCEL卡在了这个地方,造成了EXCEL不能正常释放进程.解决方法:设置excelApp.DisplayAlerts=false,就是不提问任何提示,这样再关闭EXCEL对象时,就不会有保存提示,也就不会卡住了.

解决方案

解决方案二:
客户使用的是你的功能,又不会看你的代码。
解决方案三:
很好,学习了.不过现在有NPOI了,不依赖OFFICE版本,兼容32位和64位,还是抛弃EXCEL.DLL吧.
解决方案四:
如果你真的搜索你会发现.这个东西根本无解..而且几乎没这么干的使用excel对象..所以我们大家都在用
解决方案五:
引用3楼diaodiaop的回复:

如果你真的搜索你会发现.这个东西根本无解..而且几乎没这么干的使用excel对象..所以我们大家都在用

你这个链接被我转载许多次了...现在下载次数多少了?
解决方案六:
引用楼主SmallBoyz的回复:

解决方法:设置excelApp.DisplayAlerts=false,就是不提问任何提示,这样再关闭EXCEL对象时,就不会有保存提示,也就不会卡住了.

谢谢分享,
解决方案七:
引用4楼Z65443344的回复:

你这个链接被我转载许多次了...现在下载次数多少了?

下载次数:203没办法,还是有很人上百度搜索使用office组件..而且从来不搜索..还一直问问问问问...最近也有很多.不搜索上来就问的..还有doc的不如你去玩个aspose.word那个东西吧
解决方案八:
引用4楼Z65443344的回复:

现在下载次数多少了?

好腻害排名都900多了...
解决方案九:
引用6楼diaodiaop的回复:

不如你去玩个aspose.word那个东西吧

等我下次需要导出WORD的时候,一定用aspose.word目前还是导出EXCEL的居多
解决方案十:
引用3楼diaodiaop的回复:

如果你真的搜索你会发现.这个东西根本无解..而且几乎没这么干的使用excel对象..所以我们大家都在用

感谢你的回复,我正在看NPOI的资料.我们公司有要求,1第三方的东西不可以用,2导出都是复杂格式(类似复杂报表),需要使用模板,以及非常多的代码来控制数据写入EXCEL格的位置,并且格式化,颜色,外框都要处理.上个项目还是动态计算Cell位置.并非只是普通的数据导出.
解决方案十一:
坚持使用EXCEL.DLL,就要有忍受用户各种抱怨的觉悟哦。
解决方案十二:
说到底,vba仅仅是一种客户端技术。它根本不适合服务器那样长期稳定地运行。
解决方案十三:
引用9楼SmallBoyz的回复:

Quote: 引用3楼diaodiaop的回复:
如果你真的搜索你会发现.这个东西根本无解..而且几乎没这么干的使用excel对象..所以我们大家都在用

感谢你的回复,我正在看NPOI的资料.我们公司有要求,1第三方的东西不可以用,2导出都是复杂格式(类似复杂报表),需要使用模板,以及非常多的代码来控制数据写入EXCEL格的位置,并且格式化,颜色,外框都要处理.上个项目还是动态计算Cell位置.并非只是普通的数据导出.

1.难道office不属于第三方的东西?所谓第三方的东西不可以用,你只能自己破解excel的格式,然后直接处理文件流了2.复杂格式,NPOI可以实现
解决方案十四:
还是先正确理解一下公司的要求,到底什么东西不可以用,是否是第三方的付费软件的破解版不能用,要么使用正版付费软件,要么使用开源免费软件不可能什么第三方的都不能用吧系统自带的dll难道就不是第三方软件了?
解决方案十五:
用openxml或者npoi
解决方案:
说明你代码习惯不好,操作office要先关闭工作簿,再关闭application。closeworkbookfalse不存盘退出
解决方案:
引用9楼SmallBoyz的回复:

Quote: 引用3楼diaodiaop的回复:
如果你真的搜索你会发现.这个东西根本无解..而且几乎没这么干的使用excel对象..所以我们大家都在用

感谢你的回复,我正在看NPOI的资料.我们公司有要求,1第三方的东西不可以用,2导出都是复杂格式(类似复杂报表),需要使用模板,以及非常多的代码来控制数据写入EXCEL格的位置,并且格式化,颜色,外框都要处理.上个项目还是动态计算Cell位置.并非只是普通的数据导出.

你们服务器上的office难道是正版?
解决方案:
引用16楼yuwenge的回复:

你们服务器上的office难道是正版?

你应该先问:你们服务器的操作系统难道是正版?

时间: 2024-12-23 03:00:59

关于C#中操作EXCEL后,关闭对象但EXCEL进程仍然存在的解决办法.的相关文章

我在gridview里点击“选择”按钮,希望弹出窗口,在弹出窗口操作完毕后关闭,返回值给父窗口,并对父窗口的数据源重新绑定以刷新gridview。我这么做是不能刷新gridview的,请指教。

问题描述 我在gridview里点击"选择"按钮,希望弹出窗口,在弹出窗口操作完毕后关闭,返回值给父窗口,并对父窗口的数据源重新绑定以刷新gridview.我这么做是不能刷新gridview的,请指教.前端asp.net代码:<asp:GridViewID="GridView1"runat="server"Width="860px"AllowPaging="True"AutoGenerateColum

操作-c#打开excel后在手动打开excel两个excel句柄一样

问题描述 c#打开excel后在手动打开excel两个excel句柄一样 我又重新编辑了一下 1.打开软件 2..点文件打开 3.打开psy++ 4.手动打开了一个excel 5.spy++查看 这个时候我软件本来是要操作之前打开的report.xlsx, 就变成了操作新建 Microsoft Office Excel 2007 Workbook.xlsx了... 下面是打开程序 public static Excel._Application reportExcel; public stati

SQL Server 数据库使用备份还原造成的孤立用户和对象名‘xxx’无效的错误的解决办法

server|备份|错误|对象|解决|数据|数据库 介绍SQL Server 数据库使用备份还原造成的孤立用户和对象名'xxx'无效的错误的解决办法          在使用数据库的过程中,经常会遇到数据库迁移或者数据迁移的问题,或者有突然的数据库损坏,这时需要从数据库的备份中直接恢复.但是,此时会出现问题,这里说明几种常见问题的解决方法.一.孤立用户的问题比如,以前的数据库的很多表是用户test建立的,但是当我们恢复数据库后,test用户此时就成了孤立用户,没有与之对应的登陆用户名,哪怕你建立

Win7重装系统后D、E和F磁盘不见了解决办法

Win7重装系统后D.E和F磁盘不见了解决办法 先右键单击我的电脑,然后选择管理选项,之后再选择磁盘管理点击进入,这时候就可以看到D.E.F等磁盘,不过这些盘没有名称,没有分配的磁盘,接下去就可以自己进行解决了,如下图.

JS中页面与页面之间超链接跳转中文乱码问题的解决办法_javascript技巧

在原页面一张图片上添加了一个链接,链接中有中文,于是出现下面的情况:   解决办法是在tomcat的server.xml文件的中加入URIEncoding="utf-8",如下: <Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443

解析c#操作excel后关闭excel.exe的方法

C#和Asp.net下excel进程一被打开,有时就无法关闭,尤其是website.对关闭该进程有过GC.release等方法,但这些方法并不是在所有情况下均适用   于是提出了kill process的方法,目前我见过的方法多是用进程创建时间筛选excel.exe进程,然后kill .这样的方法是不精确的,也是不安全的,通过对网上一些关于Api运用文章的阅读,我找到了更为直接精确找到这个process并kill的方法以下就是代码         复制代码 代码如下: using   Syste

winform如何实现导出excel后,打开该excel文件,并在里面再次进行操作?

问题描述 现在业务有个需求.导出2份excel后(内容不同,一份是数据,一份是图片),再将两份的内容统一到一份excel里面,内容分为两个不同的sheet.小弟没对excel操作那么深入.最多也就知道如何导出.可是导出后的读取以及后续操作.实在不知道该如何做!请大家帮个忙!谢谢 解决方案 解决方案二:帮帮忙啊~

PHP中xajax库中文问题及提示返回XML文件无效的解决办法

xajax是PHP下一个非常好的ajax框架,虽然xajax自己说自己是一个库(Library),但是我觉得它更像一个框架(Framework).xajax是一个开源的 PHP 类库 它能够让你黏合HTML.CSS.Javascript和PHP,并可以结合Smarty模板系统使用. 在运用Xoops的Page模组的时候,发现其不能和中文正常工作,特别是不能和UTF-8编码的页面一起工作,昨天在利用这个实现DataGrid的时候发现完全不能正常工作了,一直报"the XML response th

CDialogBar中编辑框控件Ctrl+c,Ctrl+V不可用的解决办法

CDialogBar中编辑框控件(Edit Control)中进行用Ctrl+C.Ctrl+V进行拷贝,粘贴操作会不可用.其解决办法有二. 其一:资源的Accelerator里的子项删除ID_EDIT_PASTE和ID_EDIT_COPY项就可以了,一般在IDR_MAINFRAME里. 其二:重载PreTranslateMessage方法,其代码如下: BOOL CToolBarDlg::PreTranslateMessage(MSG* pMsg){    if (pMsg->message >