vb用数组方式快速导出MSFlexGrid表格数据到Excel表格中

       本来从MSFlexGrid或MSHFlexGrid导出数据到Excel中,是一个非常简单的问题,但论坛里还是经常有人问如何导出,有的虽然知道用单元格赋值方式循环导出,但速度太慢,因此写了一个通用的数据导出函数,由于以数组方式一次性赋值,运度速度得到了极大提升,需要的朋友可以参照以下代码,稍作修改,就可以写出用于其它表格控件向Excel导出数据的功能了。

代码如下:

Public Sub ExportToExcel(ByRef objGrid As MSHFlexGrid, ByVal strFileName As String, Optional StartRow As Long = 1, Optional StartColumn As Long = 1)
    Dim objApp As Object
    Dim objWorkbook As Object
    Dim objWorksheet As Object
    Dim objRange As Object
    Dim CellsData() As String
    Dim i As Long, j As Long
    Dim nRows As Long, nColumns As Long

    '构造二维数组
    nRows = objGrid.Rows
    nColumns = objGrid.Cols
    ReDim CellsData(1 To nRows, 1 To nColumns)
    For i = 1 To nRows
        For j = 1 To nColumns
            CellsData(i, j) = objGrid.TextMatrix(i - 1, j - 1)
        Next
    Next

    '导出到Excel中
    If StartRow < 1 Then StartRow = 1
    If StartColumn < 1 Then StartColumn = 1
    Set objApp = CreateObject("Excel.Application")
    objApp.ScreenUpdating = False '禁止屏幕刷新
    Set objWorkbook = objApp.Workbooks.Add
    Set objWorksheet = objWorkbook.Sheets.Add
    Set objRange = objWorksheet.Range(objWorksheet.Cells(StartRow, StartColumn), objWorksheet.Cells((StartRow - 1) + nRows, (StartColumn - 1) + nColumns))
    objRange.Value = CellsData
    objWorkbook.SaveAs strFileName '保存到指定文件
    objWorkbook.Close
    objApp.Quit '退出Excel
    Set objRange = Nothing
    Set objWorksheet = Nothing
    Set objWorkbook = Nothing
    Set objApp = Nothing

    '销毁二维数组
    Erase CellsData
End Sub

 测试代码如下:

Option Explicit

Private Sub Form_Load()
    Dim i As Long, j As Long

    '填充测试用数据
    Me.MSHFlexGrid1.Rows = 2000
    Me.MSHFlexGrid1.Cols = 10
    For i = 0 To Me.MSHFlexGrid1.Rows - 1
        For j = 0 To Me.MSHFlexGrid1.Cols - 1
            Me.MSHFlexGrid1.TextMatrix(i, j) = i & "行" & j & "列"
        Next
    Next
    Debug.Print Me.MSHFlexGrid1.TextArray(100)
End Sub

Private Sub cmdExport_Click()
    ExportToExcel Me.MSHFlexGrid1, "d:/temp.xls"

    Me.SetFocus
    MsgBox "导出完毕"
End Sub

 

摘自: 用数组方式快速导出MSFlexGrid表格数据到Excel表格中

相关参考

vb用数组方式快速导出MSFlexGrid表格数据到Excel表格中

Excel 非常详细 [网摘]

如何使用自动化与分析工具库创建 Excel 直方图

VB封装Excel chart

如何用VB实现Excel文件的自动合并

vb如何用代码对Excel的指定区域实行保护

如何真正实现无提示保存Excel文档

相关参考

VB表格控件总览与例程分析

VB用记录集填充表格函数

VBMSHFlexGrid添加表格编辑功能

VB相关

VB 释放资源文件到指定目录函数

VB 读取资源文件里面的字符串

VB中资源文件.res的使用方法详解

VB6.0中创建和使用文本资源文件

VB WindowsMediaPlayer 播放

vbWindowsMediaPlayer的常用属性和方法

VB Environ系统环境变量函数大全

VB 去除文本框粘贴功能

VB LISTBOX

VB 删除数组中的重复元素

VB数组快速排序算法

关于三个概念:ActiveXOLECOM

VB 获得磁盘的文件系统

VB中用API实现文件拖放

加密算法-MD5算法

VB中使用MD5算法

VB 全局热键HOOK (不占系统资源版本)

VB 小技巧自定义TextBox文本框右键菜单

VB 写下载者代码

VB 一行代码的诀窍

VBS教程-wscript对象

vb枚举进程

VB中如何让线程或进程在指定的CPU上运行

VB判断指定的WORD文档是否被打开

VB如何读取快捷方式的目标路径

VBAPI控制输入法状态

为系统加载右键注册控件选项【VB 注册控件】

VB如何根据窗口标题获得进程名称

VB快速查找大型文件中包含的字符串

VB实现可执行文件运行时自删除

VB 打开txt,bat,jpg 任意后缀程序

VB 写文件关联程序

VB 自启动建立右键菜单

VB 判断IP能否ping

VB FTP操作类(可上传、下载、创建文件夹等等)

VB部分文件汇总B

Vb 求素数最经典的方法也是最快的方法

vb用数组方式快速导出MSFlexGrid表格数据到Excel表格中

VBMsFlexGrid控件的使用细则

点击MSFlexGrid数据控件的标题进行数据排序

VB 获取鼠标坐标

VBNEW的用法(申请内存空间)

VB CreateObject函数

VB中的New CreateObject的区别

VB ListBox 添加不重复的值

VB 单击ListView控件某列表头进行排序

VB 简单实现简体与繁体互转

VB 阿拉伯数字转换为中文大写数值函数

VB 获取Textbox文本框中的行数函数

更多精彩>>>

  • 0
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值