机房收费系统之导出为Excel

简介:

在学生信息管理系统中,有很多查询窗体。在机房收费系统中,也不例外。不过,前者只要求将数据显示在窗体中,后者则多了一步,即:将查询到的信息导出为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>
这样确实简单很多,但文章的主要目的不是为了展示编写的代码,好让我们省事。而是,我想,其实,很多时候,解决问题的方法都不只只是一种,每个人思考的不同,方法也就会有所不同。代码的编写,也不是唯一的,只要自己思考过,即使运行失败了,也算是一种成功。



目录
相关文章
|
1月前
|
NoSQL 关系型数据库 MySQL
多人同时导出 Excel 干崩服务器?怎样实现一个简单排队导出功能!
业务诉求:考虑到数据库数据日渐增多,导出会有全量数据的导出,多人同时导出可以会对服务性能造成影响,导出涉及到mysql查询的io操作,还涉及文件输入、输出流的io操作,所以对服务器的性能会影响的比较大;结合以上原因,对导出操作进行排队; 刚开始拿到这个需求,第一时间想到就是需要维护一个FIFO先进先出的队列,给定队列一个固定size,在队列里面的人进行排队进行数据导出,导出完成后立马出队列,下一个排队的人进行操作;还考虑到异步,可能还需要建个文件导出表,主要记录文件的导出情况,文件的存放地址,用户根据文件列表情况下载导出文件。
多人同时导出 Excel 干崩服务器?怎样实现一个简单排队导出功能!
|
2月前
|
XML Java 数据格式
使用Freemarker模版导出xls文件使用excel打开提示文件损坏
使用Freemarker模版导出xls文件使用excel打开提示文件损坏
58 0
|
5天前
|
easyexcel 数据库
公司大佬对excel导入、导出的封装,那叫一个秒啊
封装公司统一使用的组件的主要目标是为了简化开发人员的调用流程,避免各个项目组重复集成和编写不规范的代码。文中提到对阿里EasyExcel进行了二次封装,提供了导入和导出功能,并支持模板的导入和导出。此外,还处理了读取数据与实际保存数据不一致的情况,通过提供自定义转换器来解决。
18 0
|
5天前
|
数据库
开发指南009-从list导出excel文件
从数据库返回一般是对象的列表,平台底层提供了从list转为excel文件的方法
|
5天前
|
前端开发
开发指南007-导出Excel
平台上开发导出Excel比过去的单体架构要复杂些,因为前端和后台不在一个进程空间里。
|
1月前
|
SQL Java easyexcel
【Java】百万数据excel导出功能如何实现
【Java】百万数据excel导出功能如何实现
130 0
|
2月前
|
Java
使用POI导出Excel
使用POI导出Excel
|
2月前
|
前端开发 Java Maven
springboot优雅的实现excel的导出(自适应列宽实现,中文也行),复制可用
springboot优雅的实现excel的导出(自适应列宽实现,中文也行),复制可用
60 0
|
2月前
|
测试技术 数据处理 Python
测试报告导出PDF和excel的方法
测试报告导出PDF和excel的方法