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控件常见的属性 ...
随机推荐
- springMvc基于注解登录拦截器
1.首先先定义一个拦截器注解 @Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) p ...
- Aerospike系列:2:商业版和社区版的比较
http://www.aerospike.com/products-services
- Mongostat 3.0详解
可以参考之前写的这篇博客: Mongostat 2.6详解 mapped Changed in version 3.0.0. Only for MMAPv1 Storage Engine. The t ...
- Laravel返回不重复的某个字段信息列表
->groupBy('brand_id') ->pluck('brand_id');
- 事件响应的优先级、stopProgapation禁止下层组件响应
cocos2d-js没有完整的鼠标事件处理,这点比js/flash的要差一些,不过凑合着也可以用了. 一般界面编程,可以用显示列表的Node作为监听器的优先级,在上方的会比下方的高优先级. 而coco ...
- Flash:彻底理解crossdomain.xml、跨swf调用。
安全域.crossdomain.xml,到处都有各种各种零碎的基础解释,所以这里不再复述这些概念. 本文目的是整理一下各种跨域加载的情况.什么时候会加载crossdomain,什么时候不加载. 1 ...
- __set() __get() _isset() __unset() 在__unset() 在类中没有事先声明和已经声明过的属性调用unset的区别
<?php //echo strtr("I Love Mysql, Love PHP", "Mysql","MYSQL"); //$a ...
- 【laravel5.*】详解laravel中的依赖注入
1.下面这个是自定义的类,钉钉扫码登录web 网页授权OAuth2.0,是一个典型的依赖注入参考示例:
- Gson转换json数据为对象
可以通过Gson使用两种方法,将json字符串转换为对象,以下面该段报文做测试 { "id": 84041462, "lastName": "小华&q ...
- java struts2入门学习---拦截器学习
一.拦截器,拦截器栈 1.拦截器的作用 拦截器本质上和servlet的过滤器是一样的.在struts2中,拦截器能够对Action前后进行拦截,拦截器是一个可插拨的,你可以选择使用拦截器,也可以卸载拦 ...