【機房收費系統】—— VB中 MSHFlexgrid控件導出Excel

【前言】

最近在敲機房的 [學生查看上機記錄] 時,遇到一個問題,它需要將從數據庫查到的記錄(有一條或多條)導出爲Excel表格,於是我添加了MSHFlexgrid控件,爲什麼不用MSFlexgrid控件呢?因爲這是老版本的控件了,這個控件存在一些不足,它很難將字段都居中顯示。之後,在導出爲Excel的過程中,遇到了很多問題,下面給大家分享一下這些難忘的經歷。

 

【正文】

 

第一步:引用函數 Microsoft Excel 16.0 Object Library

①我就是在這遇到了問題,我的VB中沒有Microsoft Excel 16.0 Object Library這條函數,一直從部件裏面找,找不到,後來才從引用裏面找,不過——仍然沒找到。找不到這個函數怎麼辦呢?可以點擊瀏覽,打開 C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.EXE 路徑,根據office安裝位置的不同,路徑可能會有差別。打開後你會發現,這條函數神奇的出現了!


[引用和部件的區別]

"引用"一般是引用函數,這些函數一般封裝在dll文件中的,在VB中看不到這些函數,像經常用的API函數,也包括自己封裝的函數.

"部件"一般是指控件,在VB可以看見這些控件,有一個圖標,一般是ocx文件.


 

②但是當我欣喜按了下F5,這個可怕的三連報錯又出現了,先是Excel遇到錯誤,接着部件要求掛起,然後ActiveX部件不能創建對象,這個報錯的窗體還關不了,還得強制結束它。明明引用了這個函數,還是不行,也改了兼容性,還是不行,想到裝固態之前那個系統盤裏可能還有一些Office的殘留文件對它造成了影響,於是我把系統盤格式化後,卸載了當前office,重裝了一下,結果就好了!

 


第二步:編寫模塊代碼

'將MSHFlexGrid中數據導出到Excel
Public Function ExportToExcel(myflexgrid As MSHFlexGrid)
    On eror GoTo ErrorMsg
    Dim xlApp As Object         '聲明Object類對象 後期綁定
    Dim xlBook As Object        
    Dim rows As Integer         '總行數
    Dim cols As Integer         '總列數
    Dim irow As Integer         
    Dim hcol As Integer         
    Dim icol As Integer         
    
    If myflexgrid.rows <= 1 Then                           '判斷有無數據
        MsgBox "沒有數據!", vbInformation, "提示"
        Exit Function
    Else
        If xlApp Is Nothing Then
            Set xlApp = CreateObject("Excel.Application")      '生成新的對象引用,引用Excel
        End If
        Set xlBook = xlApp.Workbooks.Add                    '創建空白的工作簿
        xlApp.Visible = True                                'Excel可見
        With myflexgrid
            rows = .rows
            cols = .cols
            irow = 0
            icol = 1
            For hcol = 0 To cols - 1                        '列循環
                For irow = 1 To rows                        '行循環
                    xlApp.Cells(irow, icol).Value = .TextMatrix(irow - 1, hcol)  
                                                             '將表中數據送到Excel
                Next irow
                icol = icol + 1
            Next hcol
        End With
        
        With xlApp
            .rows(1).Font.Bold = True                       '第一行爲粗體
            .Cells.Select                                   '選擇整個工作表
            .Columns.AutoFit                                '自動調整列寬以適應文字
            .Cells(1, 1).Select                             '
        End With
        
        xlApp.DisplayAlerts = False                         '關閉工作表,不提示用戶保存
        Set xlApp = Nothing                                 '釋放xlApp對象
        Set xlBook = Nothing                                '釋放xlBook對象
        Exit Function
        
    
    End If
ErrorMsg:
    MsgBox "當前無法導出爲Excel!", vbOKOnly + vbExclamation, "提示"
End Function

 

第三步:在窗體中調用模塊

 

Private Sub EportToExcel_Click()

    Call ExportToExcel(MSHFlexGrid1)

End Sub

 

【最後】

只要功夫深,鐵杵磨成針!

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章