vb如何将SQL数据库查询的结果导出到带字段名的Excel表?
DimmCnnasADODB.ConnectionDimmRsAsADODB.RecordsetDimstrSqlasStringDimmExcelFileAsObjec...
Dim mCnn as ADODB.Connection
Dim mRs As ADODB.Recordset
Dim strSql as String
Dim mExcelFile As Object
......'连接SQL数据库(省略)
strSql="select * from [表名] Order by 1"
Set mRs=New ADODB.Recordset
mRs.Open strSql, mCnn, adOpenKeyset, adLockReadOnly
If mRs.RecordCount > 0 Then
Set mExcelFile = CreateObject("Excel.Sheet")
mExcelFile.Application.Range("A1").CopyFromRecordset mRs
mExcelFile.SaveAs "c:\123.xls"
mExcelFile.Application.quit
Set mExcelFile = Nothing
End if
If mRs.State = adStateOpen Then mRs.Close: Set mRs = Nothing
上面的代码是完全可以将查询的结果导出到Excel中,问题是当打开123.xls时只有数据记录,并没有包含字段名,别人打开看不懂那列跟那列是代表什么!
请问有没有办法导出到Excel中也包含字段名?
希望各位大虾帮帮忙,最好不要长篇大论才能实现,要简洁。谢谢!
2楼的能说明白点吗,最好能给个例子,ok就加50分。 展开
Dim mRs As ADODB.Recordset
Dim strSql as String
Dim mExcelFile As Object
......'连接SQL数据库(省略)
strSql="select * from [表名] Order by 1"
Set mRs=New ADODB.Recordset
mRs.Open strSql, mCnn, adOpenKeyset, adLockReadOnly
If mRs.RecordCount > 0 Then
Set mExcelFile = CreateObject("Excel.Sheet")
mExcelFile.Application.Range("A1").CopyFromRecordset mRs
mExcelFile.SaveAs "c:\123.xls"
mExcelFile.Application.quit
Set mExcelFile = Nothing
End if
If mRs.State = adStateOpen Then mRs.Close: Set mRs = Nothing
上面的代码是完全可以将查询的结果导出到Excel中,问题是当打开123.xls时只有数据记录,并没有包含字段名,别人打开看不懂那列跟那列是代表什么!
请问有没有办法导出到Excel中也包含字段名?
希望各位大虾帮帮忙,最好不要长篇大论才能实现,要简洁。谢谢!
2楼的能说明白点吗,最好能给个例子,ok就加50分。 展开
2个回答
展开全部
你在用CopyFromRecordset前先把字段名写上,然后换一行再把数据集拷贝就可以了。
===========================================================
先把这句mExcelFile.Application.Range("A1").CopyFromRecordset mRs
改为:
mExcelFile.Application.Range("A2").CopyFromRecordset mRs
然后在这句前面加上下面的代码试试看,应该可以的:
For i = 0 To mRst.Fields.Count - 1
mExcelFile.ActiveSheet.Cells(1, i + 1).Value = mRst.Fields(i).Name
Next
'设置字段名加粗(如果不需要可忽略此句)
mExcelFile.ActiveSheet.Range(.ActiveSheet.Cells(1, 1), mExcelFile.ActiveSheet.Cells(1, mRst.Fields.Count)).Font.Bold = True
===========================================================
先把这句mExcelFile.Application.Range("A1").CopyFromRecordset mRs
改为:
mExcelFile.Application.Range("A2").CopyFromRecordset mRs
然后在这句前面加上下面的代码试试看,应该可以的:
For i = 0 To mRst.Fields.Count - 1
mExcelFile.ActiveSheet.Cells(1, i + 1).Value = mRst.Fields(i).Name
Next
'设置字段名加粗(如果不需要可忽略此句)
mExcelFile.ActiveSheet.Range(.ActiveSheet.Cells(1, 1), mExcelFile.ActiveSheet.Cells(1, mRst.Fields.Count)).Font.Bold = True
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
excel是表,表是有列名的,对应数据库的字段名
就告诉你这么多
自己百度去吧,很多的
就告诉你这么多
自己百度去吧,很多的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询