機房收費係統之導出為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