另类快速导出数据库为EXCEL文档
时 间:2007-10-15 13:01:02
作 者:我不记得了,知道的告诉我 ID:70 城市:闵行
摘 要:另类快速导出数据库为EXCEL文档
作者我不记得了,如果谁知道请告诉我一下
正 文:
Dim i As Integer, j As Integer
Dim myexcel As New Excel.Application
Dim mybook As New Excel.Workbook
Dim mysheet As New Excel.Worksheet
Set mybook = myexcel.Workbooks.Add '添加一个新的BOOK
Set mysheet = mybook.Worksheets.Add '添加一个新的SHEET
' For i = 1 To myres.RecordCount
' For j = 1 To myres.Fields.Count
' mysheet.Cells(i, j) = myres.Fields.Item(j - 1).Value
' If (i * j) Mod 500 = 0 Then
' DoEvents
' End If
' Next j
' myres.MoveNext
' Next i
myexcel.Visible = True
mybook.SaveAs (m_ExcelName) '保存文件
这中方法没什么错误,但是如果数据量很大的话,麻烦就来了,出现程序长时间不响应
关键是循环,下给出我的代码
假设定义的记录名为myres
Dim myexcel As New Excel.Application
Dim mybook As New Excel.Workbook
Dim mysheet As New Excel.Worksheet
Set mybook = myexcel.Workbooks.Add '添加一个新的BOOK
Set mysheet = mybook.Worksheets.Add '添加一个新的SHEET
myexcel.visible=true
mysheet.Cells.CopyFromRecordset myres
mybook.SaveAs (m_ExcelName) '保存文件
利用这个代码可以大大的缩短导出时间,8000多个纪录用第一种方法大概需要2分多
而用第二种方法只大概要4秒,
Dim myexcel As New Excel.Application
Dim mybook As New Excel.Workbook
Dim mysheet As New Excel.Worksheet
Set mybook = myexcel.Workbooks.Add '添加一个新的BOOK
Set mysheet = mybook.Worksheets.Add '添加一个新的SHEET
' For i = 1 To myres.RecordCount
' For j = 1 To myres.Fields.Count
' mysheet.Cells(i, j) = myres.Fields.Item(j - 1).Value
' If (i * j) Mod 500 = 0 Then
' DoEvents
' End If
' Next j
' myres.MoveNext
' Next i
myexcel.Visible = True
mybook.SaveAs (m_ExcelName) '保存文件
这中方法没什么错误,但是如果数据量很大的话,麻烦就来了,出现程序长时间不响应
关键是循环,下给出我的代码
假设定义的记录名为myres
Dim myexcel As New Excel.Application
Dim mybook As New Excel.Workbook
Dim mysheet As New Excel.Worksheet
Set mybook = myexcel.Workbooks.Add '添加一个新的BOOK
Set mysheet = mybook.Worksheets.Add '添加一个新的SHEET
myexcel.visible=true
mysheet.Cells.CopyFromRecordset myres
mybook.SaveAs (m_ExcelName) '保存文件
利用这个代码可以大大的缩短导出时间,8000多个纪录用第一种方法大概需要2分多
而用第二种方法只大概要4秒,
还有比这个更快的方法。
请使用微软公司推荐的 拷贝ADO记录集 的技术
即在EXCEL工作表实例中应用 CopyFromRecordset 方法
———————————————————————————————
例:将记录集复制到工作表中,复制的起始位置在 A2 单元格
ws.Range("A2").CopyFromRecordset rs
其中WS 是工作表实例;rs是 ADO的一个记录集
———————————————————————————————
CopyFromRecordset 方法 的用法
将一个 ADO 或 DAO Recordset 对象的内容复制到工作表中,复制的起始位置在指定区域的左上角。如果 Recordset 对象包含带 OLE 对象的字段,本方法将失效。
expression.CopyFromRecordset(Data, MaxRows, MaxColumns)
expression 必需。该表达式返回一个 Range 对象。
Data Variant 类型,必需。复制到指定区域的 Recordset 对象。
MaxRows Variant 类型,可选。复制到工作表的记录个数上限。如果省略该参数,将复制 Recordset 对象的所有记录。
MaxColumns Variant 类型,可选。复制到工作表的字段个数上限。如果省略该参数,将复制 Recordset 对象的所有字段。
说明
复制从 Recordset 对象的当前行开始的内容。复制完成之后,Recordset 对象的 EOF 属性值为 True。
以上实例来自于EXCEL 示例文件
请使用微软公司推荐的 拷贝ADO记录集 的技术
即在EXCEL工作表实例中应用 CopyFromRecordset 方法
———————————————————————————————
例:将记录集复制到工作表中,复制的起始位置在 A2 单元格
ws.Range("A2").CopyFromRecordset rs
其中WS 是工作表实例;rs是 ADO的一个记录集
———————————————————————————————
CopyFromRecordset 方法 的用法
将一个 ADO 或 DAO Recordset 对象的内容复制到工作表中,复制的起始位置在指定区域的左上角。如果 Recordset 对象包含带 OLE 对象的字段,本方法将失效。
expression.CopyFromRecordset(Data, MaxRows, MaxColumns)
expression 必需。该表达式返回一个 Range 对象。
Data Variant 类型,必需。复制到指定区域的 Recordset 对象。
MaxRows Variant 类型,可选。复制到工作表的记录个数上限。如果省略该参数,将复制 Recordset 对象的所有记录。
MaxColumns Variant 类型,可选。复制到工作表的字段个数上限。如果省略该参数,将复制 Recordset 对象的所有字段。
说明
复制从 Recordset 对象的当前行开始的内容。复制完成之后,Recordset 对象的 EOF 属性值为 True。
以上实例来自于EXCEL 示例文件
Access软件网官方交流QQ群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access快速开发平台--对上传...(11.22)
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)
- 微软Access邀测新Monaco...(11.12)
- Access列表框左右互选、列表框...(11.11)
- 高效率在导入数据前删除记录(11.10)
- Access报价单转订单示例代码(11.08)
- Access系统自带的日期选择器不...(11.08)