在学生信息管理系统中,有很多查询窗体。在机房收费系统中,也不例外。不过,前者只要求将数据显示在窗体中,后者则多了一步,即:将查询到的信息导出为Excel表的形式。
这样的工作好熟悉,因为在作品展中试过很多次了。那时候,还没有学数据库,师父就让我们用Excel表来存储数据,以显示出来。所以,做起来还是比较得心应手的。
第一个窗体,学生查看上机记录,没有多想,就直接在导出为Excel命令下编写代码:
<span style="font-family:KaiTi_GB2312;font-size:24px;">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 style="font-family:KaiTi_GB2312;font-size:24px;">Public Sub ExportToExcel(FormName As Form, flex As MSFlexGrid) </span>
<span style="font-family:KaiTi_GB2312;font-size:24px;"> '导出为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 style="font-family:KaiTi_GB2312;font-size:24px;">Private Sub cmdExcel_Click() Call ExportToExcel(frmInquireRechargeRecord, MSFlexRechargeRecord) ’调用导出为Excel表过程 End Sub</span>这样确实简单很多,但文章的主要目的不是为了展示编写的代码,好让我们省事。而是,我想,其实,很多时候,解决问题的方法都不只只是一种,每个人思考的不同,方法也就会有所不同。代码的编写,也不是唯一的,只要自己思考过,即使运行失败了,也算是一种成功。