用VB.Net导出数据到数据透视表
很多时候可以利用Excel的数据透视表导出你想要的报表格式。那么在.Net下如何做呢?下面的代码可以从数据库中取出数据然后导入Excel。 Dim excel As Excel.ApplicationÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
Dim xBk As Excel._WorkbookÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
Dim xSt As Excel._WorksheetÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
Dim xRange As Excel.RangeÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
Dim xPivotCache As Excel.PivotCacheÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
Dim xPivotTable As Excel.PivotTableÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
Dim xPivotField As Excel.PivotFieldÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
Dim cnnsr As String, sql As StringÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
Dim RowFields() As String = {"", "", ""}ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
Dim PageFields() As String = {"", "", "", "", "", ""}ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
'SERVER 是服务器名或服务器的IP地址ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
'DATABASE 是数据库名ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
'Table 是表名ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
TryÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
' 开始导出ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
cnnsr = "ODBC;DRIVER=SQL Server;SERVER=" + SERVER ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
cnnsr = cnnsr + ";UID=;APP=Report Tools;WSID=ReportClient;DATABASE=" + DATABASEÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
cnnsr = cnnsr + ";Trusted_Connection=Yes"ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
excel = New Excel.ApplicationClassÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
xBk = excel.Workbooks.Add(True)ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
xSt = xBk.ActiveSheetÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
xRange = xSt.Range("A4")ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
xRange.Select()ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
' 开始ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
xPivotCache = xBk.PivotCaches.Add(SourceType:=2)ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
xPivotCache.Connection = cnnsrÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
xPivotCache.CommandType = 2ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
sql = "select * from " + TableÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
xPivotCache.CommandText = sqlÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
xPivotTable = xPivotCache.CreatePivotTable(TableDestination:="Sheet1!R3C1", TableName:="数据透视表1", DefaultVersion:=1)ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
'准备行字段ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
RowFields(0) = "字段1"ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
RowFields(1) = "字段2"ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
RowFields(2) = "字段3"ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
'准备页面字段ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
PageFields(0) = "字段4"ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
PageFields(1) = "字段5"ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
PageFields(2) = "字段6"ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
PageFields(3) = "字段7"ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
PageFields(4) = "字段8"ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
PageFields(5) = "字段9"ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
xPivotTable.AddFields(RowFields:=RowFields, PageFields:=PageFields)ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
xPivotField = xPivotTable.PivotFields("数量")ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
xPivotField.Orientation = 4ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
' 关闭工具条ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
'xBk.ShowPivotTableFieldList = FalseÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
'excel.CommandBars("PivotTable").visible = FalseÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
excel.Visible = TrueÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
Catch ex As ExceptionÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
If cnn.State = ConnectionState.Open ThenÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
cnn.Close()ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
End IfÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
xBk.Close(0)ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
excel.Quit()ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
MessageBox.Show(ex.Message, "报表工具", MessageBoxButtons.OK, MessageBoxIcon.Warning)ÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"
End TryÐçUül;¼¶bbs.szblogs.com!j<;
ßq(o"