在机房收费系统中,我们可以看到有很多很多的查询窗体,而在这些查询窗体中我们用到从MSFlexGrid记录导出为Excel,跟之前接触的学生信息管理系统的查询窗体相比,多了一步,即:将网格控件中的数据导出到Excel中。
处理这个问题时,我找到了两种可行的解决方法
第一种方法:
工程引用——勾选Microsoft Excel 16.0 Object Library
当然在引用之前,我们一定要保证电脑上有Office应用程序,(有时有该应用程序,但是在直接勾选时会出现问题)出现引用不了的问题时我们可以采用以下方式解决:找到电脑中Excel程序所在的位置(注:不是快捷方式所在的位置),然后点击引用里边的“浏览”,将EXCEL.EXE添加到引用中即可☺
添加完引用之后,我们就可以在窗体中编写代码了,具体代码☟☟☟
Private Sub cmdExportExcel_Click()
Dim i As Integer
Dim j As Integer
Dim xlApp As Excel.Application
'创建Excel对象,使Excel对用户可见
Dim xlBook As Excel.Workbook
'声明工作薄对象
Dim xlSheet As Excel.Worksheet
'声明工作表单
'判断是否有记录
If MSFlexGrid.Text = "" Then
MsgBox "没有记录可导出!", vbOKOnly + vbExclamation, "警告"
Exit Sub
Else
Set xlApp = CreateObject("Excel.Application")
'实例化对象xlApp
xlApp.Visible = True '使Excel对用户可见
Set xlBook = xlApp.Workbooks.Add
'创建新的空白工作薄
Set xlSheet = xlBook.Worksheets(1)
'创建新的工作表单
'填入数据
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 j
Next i
End If
End Sub
为了更简便更能体现“技术”,我们可以将函数定义在模块中,然后在需要用到的窗体中再调用它✿
第二种方法:
在存放该系统窗体的文件夹中提前建立好空白的Excel表格,具体代码如下☟☟☟
Private Sub cmdExportExcel_Click()
Dim i As Integer
Dim j As Integer
Dim xlApp As Excel.Application
'创建Excel对象,使Excel对用户可见
Dim xlBook As Excel.Workbook
'声明工作薄对象
Dim xlSheet As Excel.Worksheet
'声明工作表单
'判断是否有记录
If MSFlexGrid1.Text = "" Then
MsgBox "没有记录可导出!", vbOKOnly + vbExclamation, "警告"
Exit Sub
Else
MSFlexGrid1.Redraw = False
Set xlApp = CreateObject("Excel.Application")
'实例化对象xlAPP
Set xlBook = xlApp.Workbooks.Open(App.Path & "\学生上机记录.xls")
'打开之前新建好的空白EXCEL工件簿
xlApp.Visible = True '使Excel对用户可见
Set xlSheet = xlBook.Worksheets("Sheet1")
'创建新的工作表单
'填入数据
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 j
Next i
MSFlexGrid1.Redraw = True
End If
End Sub
这种方法比较适用于表格比较少的情况下,如果需要导出的表格比较多时,这种方法属实有点繁琐☹