1. 程式人生 > >C# 關閉 Excel程序

C# 關閉 Excel程序

   private bool SaveToExcel()
        {

            string FileName;
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.RestoreDirectory = true;
            saveFileDialog.OverwritePrompt = true;
            saveFileDialog.AutoUpgradeEnabled = true;
            saveFileDialog.Filter = "Execl files (*.xlsx)|*.xlsx";
            saveFileDialog.FilterIndex = 1;
            saveFileDialog.Title = "儲存先のファイルを選択してください";        
            Excel.Application excel = new Excel.Application();
            Excel.Workbook book = excel.Workbooks.Add(Excel.XlSheetType.xlWorksheet);
            //Excel.Sheets woSheets = book.Worksheets;
            Excel.Worksheet newSheet = null;
            Excel.Workbook ReBook = excel.Workbooks.Add(Excel.XlSheetType.xlWorksheet);

            try
            {
                //データ書き込み
                if (this.Keys.Count > 0)             
                {
                    FileName = String.Format("{0:yyyyMMdd-HHmmss}", DateTime.Now) + "-R1&R2.xls";
                    //シート追加
                    newSheet = (Excel.Worksheet)book.Sheets.Add(
                        Type.Missing, Type.Missing, this.R1sheetNo.Count + this.R2sheetNo.Count - 1, Type.Missing);
                    if (!setData(saveFileDialog, book, newSheet, this.allR1Data, this.allR2Data, this.Keys,
                        this.R1sheetNo, this.R2sheetNo, FileName,this.startLine,this.endLine))
                    {
                        return false;
                    }
                }            
                //データ書き込み
                if (this.ReKeys.Count > 0)
                {
                    FileName =  String.Format("{0:yyyyMMdd-HHmmss}", DateTime.Now) + "-R1&R2.xls";
                    //シート追加
                    newSheet = (Excel.Worksheet)ReBook.Sheets.Add(
                        Type.Missing, Type.Missing, this.ReR1sheetNo.Count + this.ReR2sheetNo.Count - 1, Type.Missing);
                    if (!setData(saveFileDialog,ReBook, newSheet, this.ReallR1Data, this.ReallR2Data, this.ReKeys,
                        this.ReR1sheetNo, this.ReR2sheetNo, FileName,this.reStartLine,this.ReEndLine))
                    {
                        return false;
                    }
                }
                
                book.Close(false);
                excel.Quit();
                return true;
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
                book.Close(false);
                excel.Quit();
                if (excel != null)
                {
                    Kill(excel);
                }
                return false;
            }
            finally
            {
                if (excel != null)
                {
                    Kill(excel);
                }

            }
        }

        /// <summary>
        /// プロセス閉じる
        /// </summary>
        /// <param name="excelApp"></param>
        [System.Runtime.InteropServices.DllImport("User32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto)]
        public static extern int GetWindowThreadProcessId(IntPtr hwnd, out   int ID);
        private void Kill(Excel.Application excelApp)
        {
            IntPtr t = new IntPtr(excelApp.Hwnd);
            int k = 0; GetWindowThreadProcessId(t, out k);
            System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k);
            p.Kill();

        }

相關推薦

C# 關閉 Excel程序

   private bool SaveToExcel()         {             string FileName;             SaveFileDialog saveFileDialog = new SaveFileDialog();   

c# 關閉excel程序

excel的application app,直接使用app.Quit();app=null;有時候不能完全關閉excel程序,而通過下面的Kill方法即Kill(app);則可以讓正在處理的excel從程序中消失。 引用名稱空間using System.Runtime.In

VB之操作excel後不能關閉excel程序的原因及解決方法

一、問題: 使用如下程式碼開啟、取值及關閉excel: Public Function ImportFromExcel(excelFile As String) As Long Dim xlApp As Excel.Application Dim xlBook As Ex

以下是一個完整的關閉excel程序的例子

,我剛用過,沒有問題了。Excel.Application myExcel;Excel._Workbook myWB;Excel._Worksheet myWS = null;Excel.Range myRrange = null;try{    myExcel = new

C#匯出Excel關閉程序EXCEL.EXE

在C#中使用Microsoft.Office.Interop.Execl 匯出excel 表格時,將以下兩個屬性畝後,在導完後, Excel.exe 程序無法關閉。 // excel app 是否可見app.Visible = false;  // app 

C#匯出Excel關閉程序EXCEL.EXE)釋放資源的解決方案

       #region Kill Special Excel Process         [System.Runtime.InteropServices.DllImport("user32.dll", SetLastError = true)]         st

C#啟動外部程序以及等待外部程序關閉的幾種方法

string C# main 無限 完成 nbsp text enable geb 1. 啟動外部程序,不等待其退出。 2. 啟動外部程序,等待其退出。 3. 啟動外部程序,無限等待其退出。 4. 啟動外部程序,通過事件監視其退出。 // using Sy

C#如何關閉指定程序

public static void KillProcess(string strProcessesByName)//關閉執行緒 { foreach (Process p in Process.GetProcesses())//GetProcessesByNam

C# 匯出excel後,刪除該檔案提示 正由另一程序使用,因此該程序無法訪問此檔案

原始碼 path = Server.MapPath("~/TemporaryFile/"); if (false == System.IO.Directory.Exists(path)) { System.IO.Directory.CreateDirectory(p

關於C#關閉窗體後,依舊有後臺程序在執行的解決方法

C#中WinForm程式退出方法技巧總結  一、關閉窗體  在c#中退出WinForm程式包括有很多方法,如:this.Close(); Application.Exit();Application.ExitThread(); System.Environment.Exit(0); 等他們各自的方法不一樣,

vb.net 開啟EXCEL關閉程式後,EXCEL程序仍然存在的問題

寫在每段程式的末尾: ReleaseExcel(Excel)             GC.Collect() 另有單獨一個可呼叫過程: Sub ReleaseExcel(ByRef o As Object)         System.Runtime.I

c++ 遍歷後臺程序,並關閉相關程序

                                關閉後臺QQint CMainFrame::AutoSsrStop()             //*遍歷後臺程序,關閉相關程序。{char c[]={"connect.exe"};HANDLE handle; HANDLE handle1;ha

C#呼叫COM元件後退出Excel程序

我在使用WinForm程式呼叫Excel的COM元件的時候,也遇到了Excel程序退出的問題。這個問題很多人已經遇到,而且解決辦法也吵得很熱。 現在總結一下: 第一種方法是呼叫相關的元件釋放方法,然後用程式碼呼叫垃圾收集器進行處理。這種方法比較正常,也就是說,是通過正規渠道

C#關閉winform後程序仍在除錯

針對程式仍在除錯這個問題,因為程式中加入的執行緒,雖然執行緒的Isbackgroud=true,但是關閉介面後,執行緒仍然沒有關掉 解決方法:在closing事件中加入:Environment.Exit(Environment.ExitCode); 模態對話方塊的再次呼叫

c#操作Excel

sum nbsp span eof esp ted ++ pen bsp using System; using System.Collections.Generic; using System.Text; using System.Data.OleDb; using S

NPOI之C#下載Excel

bold setfont top 步驟 value 課程 erl adl max Java中這個類庫叫POI,C#中叫NPOI,很多從Java一直到.Net平臺的類庫為了區別大部分都是在前面加個N,比如Hibernate和NHibernate。 npoi下載地址 一、使

Macbook怎麽強制關閉後臺程序?Macbook強制關閉後臺程序的方法

killall 紅色 -i www 關於 light cbo 圖標 終端 有時候我們的Macbook電腦運行某個程序卡在那裏耗了很長時間,程序本身有可能提供了取消按鈕,點了也沒有反應,這時候我們就很想強制關閉它了,那麽Macbook怎麽強制關閉後臺運行的程序呢?下面完美小編

查找網上關於C++讀取Excel表格資料後的心得

cst 批評 目錄 work 各路 網上 sse rate books 使用微軟提供的自帶COM組件來讀Excel 一、讀取Excel文件COM類的相關環境的搭建: 1、首先新建一個MFC對話框工程,可命名為ReadWriteExcel 2、在添加類選項中, 選擇MFC

C++ 入門小程序

color name hello namespace world ios urn use pan 1.控制臺輸出 hello world #include "stdafx.h" #include<iostream> using namespace std;

C++ 泛型程序設計與STL模板庫(1)---泛型程序設計簡介及STL簡介與結構

urn 向上 隊列 是把 鏈表 需要 input stack 特定 泛型程序設計的基本概念 編寫不依賴於具體數據類型的程序 將算法從特定的數據結構中抽象出來,成為通用的 C++的模板為泛型程序設計奠定了關鍵的基礎 術語:概念 用來界定具備一定功能的數據類型。例如: