閱讀987 返回首頁    go 阿裏雲 go 技術社區[雲棲]


機房收費係統之導出為Excel

在學生信息管理係統中,有很多查詢窗體。在機房收費係統中,也不例外。不過,前者隻要求將數據顯示在窗體中,後者則多了一步,即:將查詢到的信息導出為Excel表的形式。

這樣的工作好熟悉,因為在作品展中試過很多次了。那時候,還沒有學數據庫,師父就讓我們用Excel表來存儲數據,以顯示出來。所以,做起來還是比較得心應手的。

第一個窗體,學生查看上機記錄,沒有多想,就直接在導出為Excel命令下編寫代碼:

<span >Private Sub cmdExcel_Click()

    '直接創建程序導出到Excel表中
    
    Dim xlsApp As New Excel.Application    '定義Excel程序
    Dim xlsBook As Excel.Workbook          '定義工作簿
    Dim xlsSheet As Excel.Worksheet        '定義工作表
    
    Dim i As Integer                       '定義控件的行值
    Dim j As Integer                       '定義控件的列值
    
    If FlexOnlineRecord.Text = "" Then     '判斷控件是否有內容
        MsgBox "沒有記錄可導出!", vbOKOnly + vbExclamation, "警告"
        Exit Sub
    Else
        Set xlsBook = xlsApp.Workbooks.Add(1)            '創建新的工作簿
        Set xlsSheet = Excel.ActiveWorkbook.ActiveSheet  '創建新的工作表單
        
        For i = 0 To FlexOnlineRecord.Rows - 1           '顯示數據
            For j = 0 To FlexOnlineRecord.Cols - 1
            xlsSheet.Cells(i + 1, j + 1) = FlexOnlineRecord.TextMatrix(i, j)
            Next j
        Next i
        
        xlsApp.Visible = True              '顯示Excel表格
        'Set xlsApp = Nothing '交還控製給Excel
        xlsApp.Sheets(1).Columns.EntireColumn.AutoFit '自動調整列寬
    End If
    
End Sub</span>
後來想想,好幾個窗體都要求將查詢結果導入到Excel中,這樣重複的代碼量太多了,何不妨自己添加一個過程,到時候直接調用就可以了。於是,在模塊中添加了一個名為ExportToExcel的過程,

<span >Public Sub ExportToExcel(FormName As Form, flex As MSFlexGrid)   </span>
<span >    '導出為Excel表的過程,前者為當前工作的窗體名,後者為控件名。
    
    Dim xlsApp As Object
    Dim xlsBook As Object
    Dim xlsSheet As Object
    
    Screen.MousePointer = vbHourglass
    
    Set xlsApp = New Excel.Application
    Set xlsBook = xlsApp.Workbooks.Add
    Set xlsSheet = xlsBook.Worksheets(1)
    
    On Error GoTo Err_proc
    
    Dim i As Integer
    Dim j As Integer
    
    With flex                           '將數據寫入Excel表中
        For i = 0 To .Rows - 1
            For j = 0 To .Cols - 1
                xlsSheet.Cells(i + 1, j + 1).Value = "'" & .TextMatrix(i, j)
                
            Next j
        Next i
    End With
    
    xlsApp.Sheets(1).Columns.EntireColumn.AutoFit '自動調整列寬
    xlsApp.Visible = True
    Screen.MousePointer = vbDefault
    Exit Sub
    
Err_proc:

    Screen.MousePointer = vbDefault
    MsgBox "請確認您的電腦已安裝Excel,或是否安裝正確!", vbExclamation, "機房收費係統"

End Sub
</span>
其中,也許有的電腦上沒有安裝Excel程序,所以可以事先進行錯誤處理。有了這樣一個過程,就方便多了,第二個窗體,......,後麵的窗體,就可以在導出為Excel命令下直接編寫代碼為:

<span >Private Sub cmdExcel_Click()

    Call ExportToExcel(frmInquireRechargeRecord, MSFlexRechargeRecord)              ’調用導出為Excel表過程
    
End Sub</span>
這樣確實簡單很多,但文章的主要目的不是為了展示編寫的代碼,好讓我們省事。而是,我想,其實,很多時候,解決問題的方法都不隻隻是一種,每個人思考的不同,方法也就會有所不同。代碼的編寫,也不是唯一的,隻要自己思考過,即使運行失敗了,也算是一種成功。



最後更新:2017-04-03 20:19:30

  上一篇:go 未能創建類型“Genersoft.ZJGL_XD.XDXTXY.XDGLPUBSrv”。
  下一篇:go C# Excel數據驗重及Table數據驗重