2012年5月26日 星期六

[VB .NET] Microsoft.Office.Interop.Excel 讀 / 寫 Excel 語法概全

http://www.dotblogs.com.tw/yc421206/archive/2009/01/11/6741.aspx


在上一篇介紹用C#讀Excel,這次就VB.NET來展現對Excel的讀寫,對我來說用VB.NET操作Excel比較簡單,不像C#.Net有那麼多限制,Excel VBA果然跟VB.NET是兄弟,讓我不費吹灰之力就能溝通、控制,接下來就來寫實作方法:
第一步:加入EXCEL.EXE當參考,基本上跟上一篇一模一樣,請參考[C# .Net] Microsoft.Office.Interop.Excel 讀 / 寫 Excel 語法概全
第二步:引用Microsoft.Office.Interop.Excel命名空間
Imports Microsoft.Office.Interop.Excel

第三步:引用Excel類別


 '用於存放Microsoft Excel 引用的變數。 
Public xlApp As Application
Public xlBook As Workbook
Public xlSheet As Worksheet
Public xlRange As Range



第四步:為專案引用Excel,開啟 / 不開啟 一個新的Excel
   On Error Resume Next
       '#一部電腦僅執行一個Excel Application, 就算中突開啟Excel也不會影響程式執行
        '#在工作管理員中只會看見一個EXCEL.exe在執行,不會浪費電腦資源
        '#引用正在執行的Excel Application
        xlApp = GetObject(, "Excel.Application")
        '#若發生錯誤表示電腦沒有Excel正在執行,需重新建立一個新的應用程式
        If Err.Number() <> 0 Then
            Err.Clear()
            '#執行一個新的Excel Application
            xlApp = CreateObject("Excel.Application")
            If Err.Number() <> 0 Then
                MsgBox("電腦沒有安裝Excel")
                End
            End If
        End If



第五步:快樂使用Excel
      '打開已經存在的EXCEL工件簿文件
        xlBook = xlApp.Workbooks.Open(Directory.GetCurrentDirectory() & "\" & "Sample.xlt")
        '停用警告訊息
        xlApp.DisplayAlerts = False
        '設置EXCEL對象可見
        xlApp.Visible = True
        '設定活頁簿為焦點
        xlBook.Activate()
        '顯示第一個子視窗
        xlBook.Parent.Windows(1).Visible = True
        '引用第一個工作表
        xlSheet = xlBook.Worksheets(1)
        '設定工作表為焦點
        xlSheet.Activate()
 
        '===================================================
        '#用Array寫資料至EXCEL
        Dim myRows As Long, myCols As Long
        myRows = UBound(DataArray, 1) + 1
        myCols = UBound(DataArray, 2)
        '選擇儲存格範圍
        xlSheet.Range(xlApp.Cells(2, 1), xlApp.Cells(myCols, myRows)).Select()
        '陣列一次寫入Excel
        xlSheet.Range(xlApp.Cells(2, 1), xlApp.Cells(myCols, myRows)).Value = xlApp.Transpose(DataArray)
        '呼叫Excel的巨集
        xlApp.Run("Sample.xlt" & "!Caculater")
        '另存新檔
        xlBook.SaveAs(Directory.GetCurrentDirectory() & "\" & "TETS.XLS")
        '關閉當前活頁簿EXCEL
        xlBook.Close()
        'xlApp.Quit()
        '回收excel
        System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp)
        xlApp = Nothing
        xlBook = Nothing
        xlSheet = Nothing
        xlRange = Nothing
        GC.Collect()



範例下載:VB.NET讀Excel.rar

沒有留言:

張貼留言