• 【机房收费系统】—— VB中 MSHFlexgrid控件导出Excel


    【前言】

    最近在敲机房的 [学生查看上机记录] 时,遇到一个问题,它需要将从数据库查到的记录(有一条或多条)导出为Excel表格,于是我添加了MSHFlexgrid控件,为什么不用MSFlexgrid控件呢?因为这是老版本的控件了,这个控件存在一些不足,它很难将字段都居中显示。之后,在导出为Excel的过程中,遇到了很多问题,下面给大家分享一下这些难忘的经历。

    【正文】

    第一步:引用函数 Microsoft Excel 16.0 Object Library

    ①我就是在这遇到了问题,我的VB中没有Microsoft Excel 16.0 Object Library这条函数,一直从部件里面找,找不到,后来才从引用里面找,不过——仍然没找到。找不到这个函数怎么办呢?可以点击浏览,打开 C:Program Files (x86)Microsoft Office ootOffice16EXCEL.EXE 路径,根据office安装位置的不同,路径可能会有差别。打开后你会发现,这条函数神奇的出现了!


    [引用和部件的区别]

    "引用"一般是引用函数,这些函数一般封装在dll文件中的,在VB中看不到这些函数,像经常用的API函数,也包括自己封装的函数.

    "部件"一般是指控件,在VB可以看见这些控件,有一个图标,一般是ocx文件.


    ②但是当我欣喜按了下F5,这个可怕的三连报错又出现了,先是Excel遇到错误,接着部件要求挂起,然后ActiveX部件不能创建对象,这个报错的窗体还关不了,还得强制结束它。明明引用了这个函数,还是不行,也改了兼容性,还是不行,想到装固态之前那个系统盘里可能还有一些Office的残留文件对它造成了影响,于是我把系统盘格式化后,卸载了当前office,重装了一下,结果就好了!

     


    第二步:编写模块代码

    '将MSHFlexGrid中数据导出到Excel
    Public Function ExportToExcel(myflexgrid As MSHFlexGrid)
        On eror GoTo ErrorMsg
        Dim xlApp As Object         '声明Object类对象 后期绑定
        Dim xlBook As Object        
        Dim rows As Integer         '总行数
        Dim cols As Integer         '总列数
        Dim irow As Integer         
        Dim hcol As Integer         
        Dim icol As Integer         
        
        If myflexgrid.rows <= 1 Then                           '判断有无数据
            MsgBox "没有数据!", vbInformation, "提示"
            Exit Function
        Else
            If xlApp Is Nothing Then
                Set xlApp = CreateObject("Excel.Application")      '生成新的对象引用,引用Excel
            End If
            Set xlBook = xlApp.Workbooks.Add                    '创建空白的工作簿
            xlApp.Visible = True                                'Excel可见
            With myflexgrid
                rows = .rows
                cols = .cols
                irow = 0
                icol = 1
                For hcol = 0 To cols - 1                        '列循环
                    For irow = 1 To rows                        '行循环
                        xlApp.Cells(irow, icol).Value = .TextMatrix(irow - 1, hcol)  
                                                                 '将表中数据送到Excel
                    Next irow
                    icol = icol + 1
                Next hcol
            End With
            
            With xlApp
                .rows(1).Font.Bold = True                       '第一行为粗体
                .Cells.Select                                   '选择整个工作表
                .Columns.AutoFit                                '自动调整列宽以适应文字
                .Cells(1, 1).Select                             '
            End With
            
            xlApp.DisplayAlerts = False                         '关闭工作表,不提示用户保存
            Set xlApp = Nothing                                 '释放xlApp对象
            Set xlBook = Nothing                                '释放xlBook对象
            Exit Function
            
        
        End If
    ErrorMsg:
        MsgBox "当前无法导出为Excel!", vbOKOnly + vbExclamation, "提示"
    End Function
    

     

    第三步:在窗体中调用模块

    Private Sub EportToExcel_Click()
    
        Call ExportToExcel(MSHFlexGrid1)
    
    End Sub

    【最后】

    只要功夫深,铁杵磨成针!

  • 相关阅读:
    Django(四)
    Django(三)
    Django(二)
    Django 基础篇
    jQuery
    JDK,JRE,JVM区别与联系
    webdriver API中文文档
    selenium及webdriver的原理
    JAVA IO流结构图
    抽象工厂与工厂方法的区别
  • 原文地址:https://www.cnblogs.com/txge/p/13973637.html
Copyright © 2020-2023  润新知