如果我用POWERBUILDER查询出1000条记录,SAVE AS保存的话速度是相当快的,时间几乎可以忽略不记。
但是我如果在VB里面通过记录集绑定DATAGRID,然后在DATAGRID上进行保存成EXCLE的操作,速度就非常的慢,简直就是感觉冗长,有没有好的方法使EXCLE的保存速度加快,达到PB的水准。
但是我如果在VB里面通过记录集绑定DATAGRID,然后在DATAGRID上进行保存成EXCLE的操作,速度就非常的慢,简直就是感觉冗长,有没有好的方法使EXCLE的保存速度加快,达到PB的水准。
解决方案 »
- 菜鸟问题:怎么做个很长很长的String? VB给我报错,说我用了太多“_”?!
- 感知分辨率变化
- 怎么设置StartUpPosition?
- 多部操作产生的错误怎么解决
- 在VB程序中怎么关闭其它正在运行的程序(WORD,EXCEL等)
- God save me 一个让我头疼一天的问题.
- 我想知道如何不利用AdoDC,而直接把ADO对象和DataGrid相连接
- 高手请进!(100分)
- 怎样才能使我自己的菜单替换windows的开始菜单
- 一个关于WBCustomizer.dll的问题?
- 请问:VB里的LOG相当于计算器里的IN,那么VB里的对数LOG是用什么来表示呢?
- 请问怎样取一个BYTE数组的首地址,连续输出五个字节。急
'*********************************************************
'* 名称:ExporToExcel
'* 功能:导出数据到EXCEL
'* 用法:ExporToExcel(sql查询字符串)
'*********************************************************
Dim Rs_Data As New ADODB.Recordset
Dim Irowcount As Integer
Dim Icolcount As Integer
Dim xlApp As New Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim xlQuery As Excel.QueryTable
With Rs_Data
If .State = adStateOpen Then
.Close
End If
.ActiveConnection = Cn
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockReadOnly
.Source = strOpen
.Open
End With
With Rs_Data
If .RecordCount < 1 Then
MsgBox ("没有记录!")
Exit Function
End If
'记录总数
Irowcount = .RecordCount
'字段总数
Icolcount = .Fields.Count
End With
Set xlApp = CreateObject("Excel.Application")
Set xlBook = Nothing
Set xlSheet = Nothing
Set xlBook = xlApp.Workbooks().Add
Set xlSheet = xlBook.Worksheets("sheet1")
xlApp.Visible = True
'添加查询语句,导入EXCEL数据
Set xlQuery = xlSheet.QueryTables.Add(Rs_Data, xlSheet.Range("a1"))
With xlQuery
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
End With
xlQuery.FieldNames = True '显示字段名
xlQuery.Refresh
With xlSheet
.Range(.Cells(1, 1), .Cells(1, Icolcount)).Font.Name = "黑体"
'设标题为黑体字
.Range(.Cells(1, 1), .Cells(1, Icolcount)).Font.Bold = True
'标题字体加粗
.Range(.Cells(1, 1), .Cells(Irowcount + 1, Icolcount)).Borders.LineStyle = xlContinuous
'设表格边框样式
End With
With xlSheet.PageSetup
.LeftHeader = "" & Chr(10) & "&""楷体_GB2312,常规""&10公司名称:" ' & Gsmc
.CenterHeader = "&""楷体_GB2312,常规""公司人员情况表&""宋体,常规""" & Chr(10) & "&""楷体_GB2312,常规""&10日 期:"
.RightHeader = "" & Chr(10) & "&""楷体_GB2312,常规""&10单位:"
.LeftFooter = "&""楷体_GB2312,常规""&10制表人:"
.CenterFooter = "&""楷体_GB2312,常规""&10制表日期:"
.RightFooter = "&""楷体_GB2312,常规""&10第&P页 共&N页"
End With
xlApp.Application.Visible = True
Set xlApp = Nothing '"交还控制给Excel
Set xlBook = Nothing
Set xlSheet = NothingEnd Function
注:须在程序中引用'Microsoft Excel 9.0 Object Library'和ADO对象,机器必装Excel 2000本程序在Windows 98/2000,VB 6 下运行通过。
见: http://jinesc.6600.org/myweb/disp.asp?idd=80&room=1010 只是有些格式不好控制
------------------------------------
babyzhou