2009年9月5日 星期六

C# 與 Excel (2) - 儲存 Excel

接著來介紹一下儲存 Excel 的語法
// 定義 Excel 儲存的路徑
// 以程式執行檔 (.exe)  所在資料夾作為儲存路徑
string strCurrentPath = Directory.GetCurrentDirectory() + "\\";

// 定義 Excel 儲存的檔名
string ExcelFileName = "新增Microsoft Excel 工作表.xls";

/* 檢查檔案是否已存在, 若已存在則先刪除舊檔       */
/* FileInfo 使用前需先 using System.IO;           */
/* Thread 使用前需先 using System.Threading; */
FileInfo fiExcelFile = new FileInfo(ExcelFileName);
if (fiExcelFile.Exists)
{
        // 刪除舊檔
        fiExcelFile.Delete();
        // 因為怕刪檔需要時間, 為避免影響程式進行, 讓程式等待 500 亳秒
        Thread.Sleep(500);
}

// 進行存檔動作 [參考MSDN]
ExcelBook.SaveAs(strCurrentPath + ExcelFileName, System.Type.Missing, System.Type.Missing, System.Type.Missing, false, false, XlSaveAsAccessMode.xlNoChange, System.Type.Missing, false, System.Type.Missing, System.Type.Missing, System.Type.Missing);

// 因為後面還有關閉 Excel 動作, 為避免還沒存完檔就被關閉, 先等待 1000 亳秒
Thread.Sleep(1000);


// 關閉 Excel 應用程式
// 為避免 Excel 跳出確認訊息, 將 Workbook.Saved 屬性設為 true [參考MSDN]
ExcelBook.Saved = true;
ExcelApp.Quit();
ExcelApp = null;

/* 在建立 Excel Application 時, 系統就會執行一個 EXCEL.exe */
/* 此時雖然利用 Application.Quit() 關閉 Excel Application    */
/* 但實際上 EXCEL.exe 並不會跟著關閉                            */
/* 所以要用 .NET 的 Garbage Collection 將 EXCEL.exe 關閉 */
/* Garbage Collection 使用前需先 using  System;             */
GC.Collect();
GC.WaitForPendingFinalizers();

沒有留言:

張貼留言