推广 热搜: LabVIEW  控制  自动化  电子  自动  软件  sci  机器视觉  编程  视觉 

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

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

 

[vb] view plain copy
 
  1. Public Sub ExportToExcel(ByRef objGrid As MSHFlexGrid, ByVal strFileName As StringOptional StartRow As Long = 1, Optional StartColumn As Long = 1)  
  2.     Dim objApp As Object  
  3.     Dim objWorkbook As Object  
  4.     Dim objWorksheet As Object  
  5.     Dim objRange As Object  
  6.     Dim CellsData() As String  
  7.     Dim i As Long, j As Long  
  8.     Dim nRows As Long, nColumns As Long  
  9.       
  10.     '构造二维数组  
  11.     nRows = objGrid.Rows  
  12.     nColumns = objGrid.Cols  
  13.     ReDim CellsData(1 To nRows, 1 To nColumns)  
  14.     For i = 1 To nRows  
  15.         For j = 1 To nColumns  
  16.             CellsData(i, j) = objGrid.TextMatrix(i - 1, j - 1)  
  17.         Next  
  18.     Next  
  19.       
  20.     '导出到Excel中  
  21.     If StartRow < 1 Then StartRow = 1  
  22.     If StartColumn < 1 Then StartColumn = 1  
  23.     Set objApp = CreateObject("Excel.Application")  
  24.     objApp.ScreenUpdating = False '禁止屏幕刷新  
  25.     Set objWorkbook = objApp.Workbooks.Add  
  26.     Set objWorksheet = objWorkbook.Sheets.Add  
  27.     Set objRange = objWorksheet.Range(objWorksheet.Cells(StartRow, StartColumn), objWorksheet.Cells((StartRow - 1) + nRows, (StartColumn - 1) + nColumns))  
  28.     objRange.Value = CellsData  
  29.     objWorkbook.SaveAs strFileName '保存到指定文件  
  30.     objWorkbook.Close  
  31.     objApp.Quit '退出Excel  
  32.     Set objRange = Nothing  
  33.     Set objWorksheet = Nothing  
  34.     Set objWorkbook = Nothing  
  35.     Set objApp = Nothing  
  36.       
  37.     '销毁二维数组  
  38.     Erase CellsData  
  39. End Sub  

 

    测试代码如下:

 

[vb] view plain copy
 
  1. Option Explicit  
  2.   
  3. Private Sub Form_Load()  
  4.     Dim i As Long, j As Long  
  5.       
  6.     '填充测试用数据  
  7.     Me.MSHFlexGrid1.Rows = 2000  
  8.     Me.MSHFlexGrid1.Cols = 10  
  9.     For i = 0 To Me.MSHFlexGrid1.Rows - 1  
  10.         For j = 0 To Me.MSHFlexGrid1.Cols - 1  
  11.             Me.MSHFlexGrid1.TextMatrix(i, j) = i & "行" & j & "列"  
  12.         Next  
  13.     Next  
  14.     Debug.Print Me.MSHFlexGrid1.TextArray(100)  
  15. End Sub  
  16.   
  17. Private Sub cmdExport_Click()  
  18.     ExportToExcel Me.MSHFlexGrid1, "d:/temp.xls"  
  19.       
  20.     Me.SetFocus  
  21.     MsgBox "导出完毕"  
  22. End Sub  
 
打赏
 
更多>同类编程
0相关评论

推荐图文
推荐编程
点击排行

网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报