none
C# 操作EXCEL进程问题 RRS feed

  • 问题

  • 我现在用CE写一个控制台程序,对两个EXCEL文件进行读写操作(用添加COM组件实现的)。但是在调试程序之前,必须要进入"WINDOWS任务管理器",手动关闭掉EXCEL.EXE这个进程,程序才可以正确运行。
    1.现在如果想要在程序中加入判断的代码,在进行两个EXCEL文件读写操作前,关闭WINDOWS中的EXCEL.EXE进程,这段代码该怎么写呀?(这样做的不好的地方,就是在代码运行期间,无法打开EXCEL文件,否则,代码无法完成它的功能)。
    2. 现在如果想代码运行期间,也可以打开其它的EXCEL文件进行操作,这样的代码该怎么写呢?

    期待答案!!!
    2009年12月29日 9:08

答案

  • 你参照下这里
    http://blog.csdn.net/f_c_sh/archive/2008/08/06/2778015.aspx

    using System.Runtime.InteropServices;

    [DllImport("User32.dll",   CharSet   =   CharSet.Auto)]  
      public static extern int GetWindowThreadProcessId(IntPtr hwnd,out int ID);
      public static void Kill(Excel.Application excel)
      {  
       IntPtr t=new IntPtr(excel.Hwnd);   //得到这个句柄,具体作用是得到这块内存入口

      int k= 0;  
       GetWindowThreadProcessId(t,out k);   //得到本进程唯一标志k
       System.Diagnostics.Process p=System.Diagnostics.Process.GetProcessById(k);   //得到对进程k的引用
       p.Kill();     //关闭进程k
      }

     


    努力+方法=成功
    2009年12月29日 9:14
  • 你好!
         打开Excel文件可以这样:
    Process.Start(@"C:\myExcel.xlsx");
    周雪峰
    2009年12月29日 9:58
    版主

全部回复

  • 你参照下这里
    http://blog.csdn.net/f_c_sh/archive/2008/08/06/2778015.aspx

    using System.Runtime.InteropServices;

    [DllImport("User32.dll",   CharSet   =   CharSet.Auto)]  
      public static extern int GetWindowThreadProcessId(IntPtr hwnd,out int ID);
      public static void Kill(Excel.Application excel)
      {  
       IntPtr t=new IntPtr(excel.Hwnd);   //得到这个句柄,具体作用是得到这块内存入口

      int k= 0;  
       GetWindowThreadProcessId(t,out k);   //得到本进程唯一标志k
       System.Diagnostics.Process p=System.Diagnostics.Process.GetProcessById(k);   //得到对进程k的引用
       p.Kill();     //关闭进程k
      }

     


    努力+方法=成功
    2009年12月29日 9:14
  • 你好!
         你这样试试:
                foreach(Process process in Process.GetProcessesByName("excel"))
                {
                    process.Kill();
                }
    周雪峰
    2009年12月29日 9:17
    版主
  • 那代码中该如何改,使得在代码运行的时候,我可以手工打开EXCEL文件呢?
    2009年12月29日 9:22
  • 你好!
         打开Excel文件可以这样:
    Process.Start(@"C:\myExcel.xlsx");
    周雪峰
    2009年12月29日 9:58
    版主