怎样将查询结果导出到Excel_2

发布时间:2007年06月04日      浏览次数:1150 次
因为我是个菜鸟,所以我写的文章都是给那些刚入门的vb新手看的。呵呵,没什么深度。欢迎大家评论!

如果你想将查询结果导出到Excel另存,以便日后查看或打印的话,那么我这里说的就是怎样将查询结果导出到Excel。先来写一个函数FillDataArray,该函数的主要作用是将查询语句中的字段名和查到的记录导入到Excel中。

Public Function FillDataArray(asArray(), adoRS As ADODB.Recordset) As Long

'将数据送 Excel 函数

Dim nRow As Integer

Dim nCol As Integer

On Error GoTo FillError

ReDim asArray(100000, adoRS.Fields.Count)

nRow = 0

For nCol = 0 To adoRS.Fields.Count - 1

asArray(nRow, nCol) = adoRS.Fields(nCol).Name

Next nCol

nRow = 1

Do While Not adoRS.EOF

For nCol = 0 To adoRS.Fields.Count - 1

asArray(nRow, nCol) = adoRS.Fields(nCol).Value

Next nCol

adoRS.MoveNext

nRow = nRow + 1

Loop

nRow = nRow + 1

FillDataArray = nRow

Exit Function

FillError:

MsgBox Error$

Exit Function

Resume

End Function

然后再来写一个过程PrintList,来调用前面的这个函数。

Private Sub PrintList()

Dim strSource, strDestination As String

Dim asTempArray()

Dim INumRows As Long

Dim objExcel As Excel.Application

Dim objRange As Excel.Range

On Error GoTo ExcelError

Set objExcel = New Excel.Application '新建一个Excel

Dim rs As New ADODB.Recordset

Set rs = Conn.Execute(sqlall)‘sqlall是查询语句

If Not rs.EOF Then

objExcel.Workbooks.Open App.Path & "\vvv.xls"

MsgBox "查询结果导出后,请将其另存为一个.xls文件,使vvv.xls中的内容为空,确保后面查询结果的正确导出。"

INumRows = FillDataArray(asTempArray, rs) '调填充数组函数

objExcel.Cells(1, 1) = "查询结果" '填表头

Set objRange = objExcel.Range(objExcel.Cells(2, 1), objExcel.Cells(INumRows, rs.Fields.Count))

objRange.Value = asTempArray '填数据



End If

objExcel.Visible = True '显示Excel

objExcel.DisplayAlerts = True '提示保存Excel

Exit Sub

ExcelError:

If Err <> 432 And Err > 0 Then

MsgBox Error$

Set objExcel = Nothing

Exit Sub

Else

Resume Next

End If

End Sub

其中用到的vvv.xls必须是先建好了的xls文件。结果导出后不要直接保存,而要将其另存为一个.xls文件,使vvv.xls中的内容为空,确保后面查询结果的正确导出。



作者Blog:http://blog.csdn.net/itzhiren/
相关文章
ASP中记录的分页
DataGrid控件(二)--分页
DataGrid控件(一)
怎样将Excel中的数据导入到SQL Server 2000数据库中
Windows消息大全祥解

对该文的评论
itzhiren ( 2004-05-30)
多谢
epspark ( 2004-04-20)
非常感谢!
另外还有个方法也不错:(在VB下连接mdb,xls表可以自命名)
dbado.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\aaa.mdb;Persist Security Info=False")
sqlstr="SELECT * INTO [Excel 5.0;DATABASE=" & filename & "].[sheet1] FROM [表名]"
dbado.Execute (sqlstr), , adCmdText + adExecuteNoRecords
wang70800560 ( 2004-04-16)
If Not rs.EOF Then

objExcel.Workbooks.Open App.Path & "\vvv.xls"

MsgBox "查询结果导出后,请将其另存为一个.xls文件,使vvv.xls中的内容为空,确保后面查询结果的正确导出。"

INumRows = FillDataArray(asTempArray, rs) '调填充数组函数

objExcel.Cells(1, 1) = "查询结果" '填表头

Set objRange = objExcel.Range(objExcel.Cells(2, 1), objExcel.Cells(INumRows, rs.Fields.Count))

objRange.Value = asTempArray '填数据



End If

挺好
文章来源:http://dev.csdn.net/article/26/26022.shtm
免责声明:本站相关技术文章信息部分来自网络,目的主要是传播更多信息,如果您认为本站的某些信息侵犯了您的版权,请与我们联系,我们会即时妥善的处理,谢谢合作!