1. 程式人生 > >機房收費系統之學生檢視上機記錄

機房收費系統之學生檢視上機記錄

在做學生檢視上機記錄窗體時,遇到了兩個比較棘手的問題,不過還是解決了!!!

First:如何將msflexgrid中的記錄匯出到excel中

如下:

Private Sub cmdexcel_click()

Rem:定義控制元件的行值
Dim i As Integer

Rem:定義控制的列值
Dim j As Integer


Rem:定義excel程式
Dim xlApp As Excel.Application

Rem:定義工作簿
Dim xlBook As Excel.Workbook

Rem:定義工作表
Dim xlSheet As Excel.Worksheet

Rem:判斷是否有記錄可供匯出
If MSFlexGrid1.Text = "" Then
            MsgBox "無記錄可匯出!", vbOKOnly + vbInformation, "溫馨提示"
            Exit Sub
Else
            Rem:物件例項化
            Set xlApp = CreateObject("Excel.Application")
            xlApp.Visible = True
            
            Rem:不斷例項化工作簿,add在這裡起不斷新建工作簿的作用
            Set xlBook = xlApp.Workbooks.Add
            
            Rem:例項化工作表
            Set xlSheet = xlBook.Worksheets(1)
            
            
            Rem:將msflexgrid中的記錄匯入到excel中
            
            For i = 0 To MSFlexGrid1.Rows - 1
                 For j = 0 To MSFlexGrid1.Cols - 1
                     MSFlexGrid1.Row = i
                     MSFlexGrid1.Col = j
                     
                     xlSheet.Cells(i + 1, j + 1) = Trim(MSFlexGrid1.Text)
                     
                 Next
            Next
End If
            
            
End Sub

我們來看下里面的程式碼:

第一:Set xlApp = CreateObject("Excel.Application")

           解釋:這句話的意思是建立一個excel

第二:Set xlBook = xlApp.Workbooks.Add

           解釋:不斷的新建工作簿,其意為可以開啟多個工作簿

第三:Set xlSheet = xlBook.Worksheets(1)

           解釋:括號中的數字可以對應開啟哪個工作表

Second:msflexgrid控制元件中表格寬度的設定:

此控制元件中想讓它載入的出來的資料剛好能夠不被表格覆蓋,可以用以下程式碼:

Rem:定義msflexgrid的自動列寬
Public Sub adjustcolwidth(frmcur As Form, gridcur As Object, Optional bnullrow As Boolean = True, Optional dbllncwidth As Double = 0)
        
Rem:定義列數和函式的代表值
Dim i, j As Integer

Rem:定義寬度

Dim dblwidth As Double
        
        
        With gridcur
        
            For i = 0 To .Cols - 1
                dblwidth = 0
                If .ColWidth(0) <> 0 Then
                   For j = 0 To .Rows - 1
                       If frmcur.TextWidth(.TextMatrix(j, i)) > dblwidth Then
                              dblwidth = frmcur.TextWidth(.TextMatrix(j, i))
                       End If
                   Next
                   
                   .ColWidth(i) = dblwidth + dbllncwidth + 1899
                End If
            Next
        End With
        
End Sub

註釋:frmcur所對應的是窗體的名稱,而grid所對應的是msflexgrid控制元件的名稱





這段程式碼可以加在公共模組中,然後再呼叫它即可。

如何呼叫:

Call adjustcolwidth(frmusercomputer, MSFlexGrid1, True, 0)