1.VB高效导入Excel2003和Excel2007文件到MSHFlexGrid控件显示

2.以前也有Excel导入通用功能,但速度有些慢一会把两种实现方式都提供出为参考对比。

一、原通用导入excel文件到MSHFlexGrid控件如下:

  1. Public Function DRExcel(fd As MSHFlexGrid, CD1 As CommonDialog) As Boolean '导入Excel文件函数 20120621孙广乐
  2.  
  3. Dim file_name As String
  4. Dim xlApp As New Excel.Application
  5. Dim xlBook As Excel.Workbook
  6. Dim xlSheet As Excel.worksheet
  7. Dim xlQuery As Excel.QueryTable
  8. Dim r 'r为行数
  9. Dim i, j
  10. On Error GoTo a:
  11. file_name = ""
  12. fnum = FreeFile
  13. CD1.Flags = &H2
  14. With CD1
  15. .Flags = cdlOFNHideReadOnly & cdlOFNOverwritePrompt
  16. ' 设置过滤器
  17. .Filter = "xls文档(*.xls)|*.xls|xlsx文档(*.xlsx)|*.xlsx" '只能导入xls这种文件格式
  18. ' 指定缺省的过滤器
  19. .FilterIndex =
  20. '.ShowSave
  21. .ShowOpen
  22. file_name = .filename
  23. End With
  24.  
  25. If file_name = "" Then '判断文件是否存在
  26. DRExcel = False
  27. Exit Function
  28. End If
  29.  
  30. Set xlApp = CreateObject("Excel.Application")
  31. Set xlBook = Nothing
  32. Set xlSheet = Nothing
  33. Set xlBook = xlApp.Workbooks().Add
  34. Set xlSheet = xlBook.Worksheets("sheet1")
  35. 'xlApp.Visible = True
  36. Set xlBook = xlApp.Workbooks.Open(file_name)
  37. Set xlSheet = xlBook.Worksheets()
  38.  
  39. '测列数
  40. j =
  41. Do While xlSheet.Cells(, j) <> ""
  42. j = j +
  43. Loop
  44. i =
  45. Do While xlSheet.Cells(i, ) <> ""
  46. i = i +
  47. Loop
  48. If j = Or i = Then
  49. MsgBox "不允许导入空表!"
  50. DRExcel = False
  51. Exit Function
  52. End If
  53.  
  54. fd.Visible = True
  55. fd.rows = i -
  56. fd.Cols = j -
  57.  
  58. For i = To fd.rows
  59.  
  60. For j = To fd.Cols '列数
  61. fd.TextMatrix(i - , j - ) = xlSheet.Cells(i, j)
  62. Next j
  63. Next i
  64.  
  65. 'xlApp.Application.Visible = True
  66.  
  67. xlBook.Close
  68. xlApp.Quit '"交还控制给Excel
  69.  
  70. fd.ColAlignment() = '物品代码
  71. MsgBox "完成导入"
  72. fd.FixedRows =
  73. fd.FixedCols =
  74. CD1.filename = ""
  75. DRExcel = True
  76. a:
  77. End Function

二、新方法,高效把excel文件导入到MSHFlexGrid控件。这个非常高效。如下:

  1. FGrid1.FixedCols =
  2.  
  3. Dim file_name As String
  4. file_name = ""
  5. CD1.Flags = &H2
  6. With CD1
  7. .Flags = cdlOFNHideReadOnly & cdlOFNOverwritePrompt
  8. ' 设置过滤器
  9. .Filter = "xls文档(*.xls)|*.xls|xlsx文档(*.xlsx)|*.xlsx" '只能导入xls这种文件格式
  10. ' 指定缺省的过滤器
  11. .FilterIndex =
  12. '.ShowSave
  13. .ShowOpen
  14. file_name = .filename
  15. End With
  16.  
  17. If file_name = "" Then '判断文件是否存在
  18. MsgBox ("选择的文件已经不存在了")
  19. Exit Sub
  20. End If
  21.  
  22. Dim excelid As Excel.Application
  23. Set excelid = New Excel.Application
  24. excelid.Workbooks.Open (file_name)
  25.  
  26. excelid.ActiveWindow.SplitRow =
  27. excelid.ActiveWorkbook.save
  28. excelid.ActiveWorkbook.Close
  29. excelid.Quit
  30.  
  31. Dim CHART1 As New ADODB.Connection, chart2 As New ADODB.Recordset
  32. CHART1.CursorLocation = adUseClient
  33.  
  34. If Right(file_name, ) = ".xlsx" Then 'excel2007版本以上
  35. CHART1.Open "Provider=Microsoft.ACE.OLEDB.12.0;Persist Security Info=False;Data Source=" & file_name & ";Extended Properties='Excel 12.0;HDR=Yes'"
  36. Else
  37. CHART1.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & file_name & ";Extended Properties='Excel 8.0;HDR=Yes'"
  38. End If
  39. Dim rs As ADODB.Recordset
  40. Set rs = CHART1.OpenSchema(adSchemaTables)
  41. Dim ls_name As String
  42. ls_name = rs.Fields().Value '取哪个sheet页数据
  43. chart2.Open "select * From [" & ls_name & "]", CHART1, adOpenKeyset, adLockOptimistic
  44. Set FGrid1.DataSource = chart2
  45.  
  46. Set CHART1 = Nothing
  47. Set chart2 = Nothing

作者:王春天  2013.11.14  地址:http://www.cnblogs.com/spring_wang/p/3423105.html

VB高效导入Excel2003和Excel2007文件到MSHFlexGrid控件显示的更多相关文章

  1. excel2003和excel2007文件的创建和读取

    excel2003和excel2007文件的创建和读取在项目中用的很多,首先我们要了解excel的常用组件和基本操作步骤. 常用组件如下所示: HSSFWorkbook excel的文档对象 HSSF ...

  2. 机房收费系统——在VB中将MSHFlexGrid控件中的数据导出到Excel

    机房收费系统中,好多查询的窗体都包含同一个功能:将数据库中查询到的数据显示在MSHFlexGrid控件中,然后再把MSHFlexGrid控件中的数据导出到Excel表格中. 虽然之前做过学生信息管理系 ...

  3. 如何在网页中浏览和编辑DWG文件 梦想CAD控件

    如何在网页中浏览和编辑DWG文件 梦想CAD控件 www.mxdraw.com 梦想绘图控件5.2  是国内最强,最专业的CAD开发组件(控件),不需要AutoCAD就能独立运行.控件使用VC 201 ...

  4. jquery文件上传控件 Uploadify

    (转自 http://www.cnblogs.com/mofish/archive/2012/11/30/2796698.html) 基于jquery的文件上传控件,支持ajax无刷新上传,多个文件同 ...

  5. 使用Uploadify(UploadiFive)多文件上传控件遇到的坑

    最近项目中需要实现多文件上传功能,于是结合需求最终选择了Uploadify这一款控件来实现.相比其他控件,Uploadify具有简洁的界面,功能API基本可以解决大多数需求,又是基于jquery的,配 ...

  6. asp.net web常用控件FileUpload(文件上传控件)

    FileUpload控件的主要中能:向指定目录上传文件,该控件包括一个文本框和一个浏览按钮. 常用的属性:FileBytes,FileContent.FileName.HasFile.PostedFi ...

  7. jquery文件上传控件 Uploadify 问题记录

    Uploadify v3.2.1 首先引用下面的文件 <!--上传控件 uploadify--> <script type="text/javascript" s ...

  8. 在WebBrowser中通过模拟键盘鼠标操控网页中的文件上传控件(转)

    引言 这两天沉迷了Google SketchUp,刚刚玩够,一时兴起,研究了一下WebBrowser. 我在<WebBrowser控件使用技巧分享>一文中曾谈到过“我现在可以通过WebBr ...

  9. FileUpload文件上传控件

    1.FileUpload控件的主要功能是向指定目录上传文件.FileUpload控件不会自动上传控件,而需要设置相关的事件处理程序,然后在程序中实现文件上传. 2.FileUpload控件常见的属性 ...

随机推荐

  1. Azure Web应用中设置静态虚拟目录的方法(比如部署Django需要用到)

    一.WEB应用中设置虚拟目录 二.在虚拟目录下放一个文件web.config,内容如下: <?xml version="1.0"?> <configuration ...

  2. JDK5.0 特性-线程任务执行架构 ScheduledExecutorService

    来自:http://www.cnblogs.com/taven/archive/2011/12/17/2291469.html import java.util.concurrent.Callable ...

  3. 关于gitblit在Windows中无法Start的问题

    前期配置/data/defaults.properties文件,请自行百度 首先:找到该目录下的该文件 右键打开,找到SET ARCH=xx,将xx替换成x86 将该处的默认修改成配置环境变量的jvm ...

  4. Kettle7.1在window启动报错

    实验环境: window10 x64 kettle7.1  pdi-ce-7.1.0.0-12.zip 错误现象: a java exception has occurred 问题解决: 运行调试工具 ...

  5. Android Studio 错误: 非法字符: &#39;\ufeff&#39; 解决方式|错误: 须要class, interface或enum

    在导入eclipse项目到Android Studio出现这种错误, 非法字符: '\ufeff' 解决方式|错误: 须要class, interface或enum.查阅后了解到Eclipse能够智能 ...

  6. awbeci网站之技术篇

    之前写的一篇关于awbeci网站的使用和介绍,大家可以看看,地址在:http://www.cnblogs.com/zhangwei595806165/p/5245640.html 1.前台 BootS ...

  7. Easyui入门视频教程 第06集---Layout初始化和属性方法使用

    目录 ----------------------- Easyui入门视频教程 第09集---登录完善 图标自定义   Easyui入门视频教程 第08集---登录实现 ajax button的使用  ...

  8. ios中asihttprequest 下载缓存

    asi中下载缓存第一种方法 #import <UIKit/UIKit.h> #import "ASIHTTPRequest.h" #import "ASIDo ...

  9. HDU 2067 小兔的棋盘 (卡特兰数)

    小兔的棋盘 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  10. 安卓listView实现下拉刷新上拉加载滑动仿QQ的删除功能

    大家对这些功能都是看的多了,然后对上拉刷新和下拉加载的原理都是非常清楚的,所以实现这功能其实也就是为了让大家能够从众多的同行们来进行比较学习而已,虽然即使是这样,但是面试的时候面试官还是会问你上拉和下 ...