from : http://www.it86.cc/develop/2008/0410/28928.shtml
Excel 是一个非常优秀的报表制作软件,用VBA可以控制其生成优秀的报表,本文通过添加查询语句的方法,即用Excel中的获取外部数据的功能将数据很快地从一个查询语句中捕获到EXCEL中,比起往每个CELL里写数据的方法提高许多倍。
在程序中引用Microsoft Excel 9.0 Object Library,将下文加入到一个模块中,窗体中调用如下ExporToExcel("select * from table")。则实现快速将数据导出到EXCEL中。
'
*********************************************************
'
* 名称:ExporToExcel
'
* 功能:导出数据到EXCEL
'
* 用法:ExporToExcel(sql查询字符串)
'
*********************************************************
Public
Function
ExporToExcel(strOpen
As
String
)
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
=
Nothing
End Function
'
'注::在程序中引用'Microsoft Excel 9.0 Object Library'和ADO对象,机器必装Excel 2000本程序在Windows 98/2000,VB 6 下运行通过。
QueryTables
excel querytables
如何使用 Visual Basic .NET 向 Excel 工作簿传输数据
C#导出Excel源码