VB高效导入Excel2003和Excel2007文件到MSHFlexGrid控件显示
1.VB高效导入Excel2003和Excel2007文件到MSHFlexGrid控件显示
2.以前也有Excel导入通用功能,但速度有些慢一会把两种实现方式都提供出为参考对比。
一、原通用导入excel文件到MSHFlexGrid控件如下:
Public Function DRExcel(fd As MSHFlexGrid, CD1 As CommonDialog) As Boolean '导入Excel文件函数 20120621孙广乐 Dim file_name As String
Dim xlApp As New Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.worksheet
Dim xlQuery As Excel.QueryTable
Dim r 'r为行数
Dim i, j
On Error GoTo a:
file_name = ""
fnum = FreeFile
CD1.Flags = &H2
With CD1
.Flags = cdlOFNHideReadOnly & cdlOFNOverwritePrompt
' 设置过滤器
.Filter = "xls文档(*.xls)|*.xls|xlsx文档(*.xlsx)|*.xlsx" '只能导入xls这种文件格式
' 指定缺省的过滤器
.FilterIndex =
'.ShowSave
.ShowOpen
file_name = .filename
End With If file_name = "" Then '判断文件是否存在
DRExcel = False
Exit Function
End If Set xlApp = CreateObject("Excel.Application")
Set xlBook = Nothing
Set xlSheet = Nothing
Set xlBook = xlApp.Workbooks().Add
Set xlSheet = xlBook.Worksheets("sheet1")
'xlApp.Visible = True
Set xlBook = xlApp.Workbooks.Open(file_name)
Set xlSheet = xlBook.Worksheets() '测列数
j =
Do While xlSheet.Cells(, j) <> ""
j = j +
Loop
i =
Do While xlSheet.Cells(i, ) <> ""
i = i +
Loop
If j = Or i = Then
MsgBox "不允许导入空表!"
DRExcel = False
Exit Function
End If fd.Visible = True
fd.rows = i -
fd.Cols = j - For i = To fd.rows For j = To fd.Cols '列数
fd.TextMatrix(i - , j - ) = xlSheet.Cells(i, j)
Next j
Next i 'xlApp.Application.Visible = True xlBook.Close
xlApp.Quit '"交还控制给Excel fd.ColAlignment() = '物品代码
MsgBox "完成导入"
fd.FixedRows =
fd.FixedCols =
CD1.filename = ""
DRExcel = True
a:
End Function
二、新方法,高效把excel文件导入到MSHFlexGrid控件。这个非常高效。如下:
FGrid1.FixedCols = Dim file_name As String
file_name = ""
CD1.Flags = &H2
With CD1
.Flags = cdlOFNHideReadOnly & cdlOFNOverwritePrompt
' 设置过滤器
.Filter = "xls文档(*.xls)|*.xls|xlsx文档(*.xlsx)|*.xlsx" '只能导入xls这种文件格式
' 指定缺省的过滤器
.FilterIndex =
'.ShowSave
.ShowOpen
file_name = .filename
End With If file_name = "" Then '判断文件是否存在
MsgBox ("选择的文件已经不存在了")
Exit Sub
End If Dim excelid As Excel.Application
Set excelid = New Excel.Application
excelid.Workbooks.Open (file_name) excelid.ActiveWindow.SplitRow =
excelid.ActiveWorkbook.save
excelid.ActiveWorkbook.Close
excelid.Quit Dim CHART1 As New ADODB.Connection, chart2 As New ADODB.Recordset
CHART1.CursorLocation = adUseClient If Right(file_name, ) = ".xlsx" Then 'excel2007版本以上
CHART1.Open "Provider=Microsoft.ACE.OLEDB.12.0;Persist Security Info=False;Data Source=" & file_name & ";Extended Properties='Excel 12.0;HDR=Yes'"
Else
CHART1.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & file_name & ";Extended Properties='Excel 8.0;HDR=Yes'"
End If
Dim rs As ADODB.Recordset
Set rs = CHART1.OpenSchema(adSchemaTables)
Dim ls_name As String
ls_name = rs.Fields().Value '取哪个sheet页数据
chart2.Open "select * From [" & ls_name & "]", CHART1, adOpenKeyset, adLockOptimistic
Set FGrid1.DataSource = chart2 Set CHART1 = Nothing
Set chart2 = Nothing
作者:王春天 2013.11.14 地址:http://www.cnblogs.com/spring_wang/p/3423105.html
VB高效导入Excel2003和Excel2007文件到MSHFlexGrid控件显示的更多相关文章
- excel2003和excel2007文件的创建和读取
excel2003和excel2007文件的创建和读取在项目中用的很多,首先我们要了解excel的常用组件和基本操作步骤. 常用组件如下所示: HSSFWorkbook excel的文档对象 HSSF ...
- 机房收费系统——在VB中将MSHFlexGrid控件中的数据导出到Excel
机房收费系统中,好多查询的窗体都包含同一个功能:将数据库中查询到的数据显示在MSHFlexGrid控件中,然后再把MSHFlexGrid控件中的数据导出到Excel表格中. 虽然之前做过学生信息管理系 ...
- 如何在网页中浏览和编辑DWG文件 梦想CAD控件
如何在网页中浏览和编辑DWG文件 梦想CAD控件 www.mxdraw.com 梦想绘图控件5.2 是国内最强,最专业的CAD开发组件(控件),不需要AutoCAD就能独立运行.控件使用VC 201 ...
- jquery文件上传控件 Uploadify
(转自 http://www.cnblogs.com/mofish/archive/2012/11/30/2796698.html) 基于jquery的文件上传控件,支持ajax无刷新上传,多个文件同 ...
- 使用Uploadify(UploadiFive)多文件上传控件遇到的坑
最近项目中需要实现多文件上传功能,于是结合需求最终选择了Uploadify这一款控件来实现.相比其他控件,Uploadify具有简洁的界面,功能API基本可以解决大多数需求,又是基于jquery的,配 ...
- asp.net web常用控件FileUpload(文件上传控件)
FileUpload控件的主要中能:向指定目录上传文件,该控件包括一个文本框和一个浏览按钮. 常用的属性:FileBytes,FileContent.FileName.HasFile.PostedFi ...
- jquery文件上传控件 Uploadify 问题记录
Uploadify v3.2.1 首先引用下面的文件 <!--上传控件 uploadify--> <script type="text/javascript" s ...
- 在WebBrowser中通过模拟键盘鼠标操控网页中的文件上传控件(转)
引言 这两天沉迷了Google SketchUp,刚刚玩够,一时兴起,研究了一下WebBrowser. 我在<WebBrowser控件使用技巧分享>一文中曾谈到过“我现在可以通过WebBr ...
- FileUpload文件上传控件
1.FileUpload控件的主要功能是向指定目录上传文件.FileUpload控件不会自动上传控件,而需要设置相关的事件处理程序,然后在程序中实现文件上传. 2.FileUpload控件常见的属性 ...
随机推荐
- 连通性问题--Algorithms IN C读书笔记
近期在看<Algorithms IN C>这本书.刚開始看,读的是英文版的.感觉作者的叙述有点不太easy理解.就找了一本中文版的来看,发现还是看英文版的比較好.先看了第一章的大部分,后面 ...
- Eclipse Java注释模板设置详解以及版权声明
网上的Eclipse注释模板,在这里稍稍整理一些比较常用的. 编辑注释模板的方法:Window->Preference->Java->Code Style->Code Temp ...
- ES6学习笔记六:迭代
一:迭代器 它是一种接口,为各种不同的数据结构提供统一的访问机制.任何数据结构只要部署Iterator接口,就可以完成遍历操作(即依次处理该数据结构的所有成员). ES6创造了一种新的遍历命令for. ...
- ES6学习笔记四:Proxy与Reflect
一:Proxy 代理. ES6把代理模式做成了一个类,直接传入被代理对象.代理函数,即可创建一个代理对象,然后我们使用代理对象进行方法调用,即可调用被包装过的方法: 1)创建 var proxy = ...
- SSM框架中,配置数据库连接的问题
MySQL数据库版本是8.0.11. 要用驱动:com.mysql.cj.jdbc.Driver 最主要的是数据库的连接url. 搞了半天才把问题搞明白: 数据库url后面要加上参数: jdbc:my ...
- centos7 在docker swarm中运行Jenkins,利用gitlab的webhook触发自动部署脚本
1.宿主机中创建目录 mkdir -p /jenkins_home 2.编辑compose文件,文件名jenkins.yml version: '3.4' services: jenkins-upgr ...
- Win一键查看用户密码
测试Win7环境,能探测系统密码 Download: 链接: https://pan.baidu.com/s/1skTeNrJ 密码: avpa
- ipad开发小结
项目小结 :布局的时候最后要用CGRectDivi.. :控制器的生命周期---->(init-->(当self.view==nil调用 loadView viewdidload)--&g ...
- sql server @@ROWCOUNT 会被 if 给 清 0
官方说 @@ROWCOUNT 会被以下几种语句清0 原文如下: Statements such as USE, SET <option>, DEALLOCATE CURSOR, CLOS ...
- Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
一段PHP程序执行报错: Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 261181 ...