CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  VB.NET

把数据库数据直接导出到EXCEL,可在进程中excel.exe不能释放??(急!在线等)

楼主jhw224(jhw)2005-02-02 10:39:57 在 .NET技术 / VB.NET 提问

软件中EXCEL对象,的定义和释放如下        
            定义变量:    
                  Dim   lvexcel   As   New   Excel.Application  
                  Dim   lvsheet   As   New   Excel.Worksheet  
   
              释放EXCEL对象:  
                  lvexcel.Workbooks.Close()  
                  lvexcel.Quit()  
   
                  lvsheet   =   Nothing  
                  lvexcel   =   Nothing 问题点数:0、回复次数:18Top

1 楼landlordh(work wonders)回复于 2005-02-02 11:22:02 得分 0

eg.:  
   
   
  Try  
                          '要先在引用中添加EXCEL组件  
                          Dim   xlApp   As   New   Excel.Application  
                          Dim   xlBook   As   Excel.Workbook  
                          Dim   xlSheet   As   Excel.Worksheet  
   
                          Try  
                                  GC.Collect()  
                                  xlBook   =   xlApp.Workbooks().Add  
                                  xlSheet   =   xlBook.Worksheets("sheet1")  
                                  xlApp.Visible   =   True  
   
                                  'do   it  
   
                          Catch   ex   As   Exception  
                                  xlSheet   =   Nothing  
                                  xlApp.DisplayAlerts   =   False  
                                  xlBook.RunAutoMacros(Excel.XlRunAutoMacro.xlAutoClose)  
                                  xlBook.Close()  
                                  xlBook   =   Nothing  
                                  xlApp.Quit()  
                                  xlApp.DisplayAlerts   =   True  
                                  xlApp   =   Nothing  
                                  GC.Collect()  
                                  MsgBox(ex.ToString)  
                                  Exit   Function  
                          finally  
                                  xlSheet   =   Nothing  
                                  xlApp.DisplayAlerts   =   False  
                                  xlBook.RunAutoMacros(Excel.XlRunAutoMacro.xlAutoClose)  
                                  xlBook.Close()  
                                  xlBook   =   Nothing  
                                  xlApp.Quit()  
                                  xlApp.DisplayAlerts   =   True  
                                  xlApp   =   Nothing  
                                  GC.Collect()  
                          End   Try                          
                  Catch   ex   As   Exception  
                          MsgBox(ex.Message)  
                  End   TryTop

2 楼hzfu007(幻影)回复于 2005-02-02 11:24:37 得分 0

在进程中直接把它kill掉。Top

3 楼lyvvvv(lyvvvv)回复于 2005-02-03 11:59:24 得分 0

lvsheet   =   Nothing  
  lvexcel   =   Nothing  
  GC.Collect   ()Top

4 楼weixinzhu(我想哭,可是我没有眼泪)回复于 2005-02-04 10:25:05 得分 0

我也遇到这样的问题,杀掉进程:  
  public   static   void   KillExcelProcess()       //'清除非保留的EXCEL进程  
  {  
  int   ExistsExcel;  
  foreach   (System.Diagnostics.Process   p   in   System.Diagnostics.Process.GetProcesses())  
  {  
  if   (p.ProcessName.ToUpper()=="EXCEL")  
  {  
  ExistsExcel   =   0;  
  for   (int   i=0;i<=9;i++)  
  {  
  if   (p.Id==ProcessIDs[i])  
  {  
  ExistsExcel   =   ExistsExcel   +   1;  
  }  
  }  
  if   (ExistsExcel.Equals(0))    
  {  
  p.Kill();  
  }  
  }  
  }  
  }Top

5 楼youlongzaitian(游龙在天)回复于 2005-02-25 09:56:53 得分 0

进程是不可以随便乱杀的,万一有好几个同样的进程,你知道杀哪个呀?困惑中···Top

6 楼toufu(豆腐)回复于 2005-02-25 13:02:13 得分 0

在调用EXCEL方法的过程外面垃圾回收  
  http://community.csdn.net/Expert/topic/3347/3347007.xml?temp=5.842227E-02  
  Top

7 楼toufu(豆腐)回复于 2005-02-25 13:07:58 得分 0

杀掉所有EXCEL进程的话,会出现把,当前打开着的EXCEL文档也一同关闭了  
  如果要杀得话就杀找到的第一个EXCEL进程,因为新生成的EXCEL一般来说会比较靠前  
   
  Private   Sub   killEXCEL()  
                  Dim   pProcess()   As   Process                                                       'CREATE   PROCESS  
                  pProcess   =   Process.GetProcesses()  
                  Dim   i   As   Integer  
                  For   i   =   0   To   pProcess.Length()   -   1  
                          If   (pProcess(i).ProcessName   =   "EXCEL")   Then           'FIND   THE   FIRST   EXCEL   PROCESS  
                                  pProcess(i).Kill()                                                     'KILL   EXCEL   PROCESS  
                                  Exit   For  
                          End   If  
                  Next  
          End   SubTop

8 楼hamadou(闵峰--为了理想而奋斗)回复于 2005-02-25 14:21:06 得分 0

新建立进程时,把它的id加入到一个数组,在程序运行结束后,遍历这个数组,将进程全部杀掉。Top

9 楼sizheng0320(四正)回复于 2005-04-08 22:31:26 得分 0

如何得到新进程的ID???如果能得到,就可以直接杀了,就不用遍历了Top

10 楼sizheng0320(四正)回复于 2005-04-08 22:41:08 得分 0

豆腐的办法也不够好,如果在程序执行过程中用户又打开了一个甚至N个EXCEL,那么岂不是又找不到了?Top

11 楼liulif(学习三个DB)回复于 2005-06-30 14:56:11 得分 0

hamadou(闵峰)的方法不错啊,不知道怎样取得到ID呢?Top

12 楼W_W_Q(韦一笑)回复于 2005-07-02 23:04:22 得分 0

又看到这个问题。。。Top

13 楼qty1209(小石头)回复于 2005-07-14 10:04:16 得分 0

在打开excel前把系统中所有的EXCEL进程ID取出来。然后打开EXCEL。再把系统中所有的EXCEL进程ID取出来。然后比较两次取得的结果。第二次中的有ID不在第一次中,那就是你创建的EXCEL进程。把它们保留下来,以后就按照这些ID来杀Top

14 楼chendazhi(不务正业)回复于 2005-07-14 10:10:38 得分 0

2月的贴还没结呢Top

15 楼ssealhanks(Hanks)回复于 2005-07-14 10:23:20 得分 0

Dim   xlApp   As   New   Excel.Application  
                  Dim   xlBook   As   Excel.Workbook    
                  Dim   xlSheet   As   Excel.Worksheet  
   
                  Dim   oBooks   As   Excel.Workbooks   ‘这里是关键  
                  oBooks   =   xlApp.Workbooks  
                  xlBook   =   oBooks.Add()  
   
                  xlSheet   =   xlBook.Worksheets("sheet1")  
   
                          System.Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet)  
                          System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook)  
                          System.Runtime.InteropServices.Marshal.ReleaseComObject(oBooks)  
                          System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)  
                          xlSheet   =   Nothing  
                          xlBook   =   Nothing  
                          oBooks   =   Nothing  
                          xlApp   =   Nothing  
                          GC.Collect()  
   
  就可以了Top

16 楼regedit362451dennis(烨儿)回复于 2005-07-14 15:02:11 得分 0

关注  
   
   
  ================================================================  
  此帖通过csdn小助手回复。  
          CSDN小助手是使用vb.net(开源)编写的CSDN论坛脱机“外挂”,她能够在  
  脱离IE的情况下使用Csdn论坛。程序只加载最核心的数据,所以显示更  
  快,产生的流量更小。  
   
          下载地址:http://qqwwee.com/csdn.rar  
  ================================================================  
  Top

17 楼xiaolang88(海纳百川有容乃大)回复于 2005-07-14 15:24:26 得分 0

你是开发asp.net吧?  
  我的方法:用VB6做一个com+组件实现从数据库中导数据导excel文件,然后给ASP.net使用。不会有这个问题Top

18 楼goldli(龙啸)回复于 2005-07-14 15:26:48 得分 0

学习Top

相关问题

  • 如何将数据库中的数据导出到excel中阿?
  • paradox数据库表导出excel的问题
  • 请问如何将数据库导出到Excel?
  • 给一段数据库导出excel程序
  • 如何导出文件内容?(数据库方面,ACCESS->DBF,EXCEL...)
  • 在ASP.NET中,如何从数据库中导出EXCEL?(用C#)
  • 数据库导出Excel问题!!急!!不解决就不睡觉!!
  • access数据库里的表怎样导出为word或excel?
  • asp.net(c#)如何把数据库导出一个模板excel中?
  • 关于asp数据库在线导出excel文件问题

关键词

  • excel
  • xlbook
  • xlapp
  • lvexcel
  • displayalerts
  • 释放
  • xlsheet
  • nothing
  • worksheets
  • workbooks

得分解答快速导航

  • 帖主:jhw224

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo