Skapa Pivottabell-rapporter
Här demonstreras en teknik för att skapa Pivottabell-rapporter i arbetsböcker.
Som framgår av exemplet så kan vi mha av SQL-frågan och hur vi skapar innehållet i Pivottabellen styra vad användarna kan göra. Förfarandet skapar förutsättningar för både flexibla och fasta rapporter.
Följande "namespaces" måste importeras till projektet:
Imports = Microsoft.Office.Interop.Excel
Imports System.Runtime.InteropServices
|
'© 2005 Alla rättigheter XL-Dennis "DBQ=C:\Northwind.mdb;DefaultDir=C:\;" & _ "DriverId=25;FIL=MS Access;" & _ "MaxBufferSize=2048;PageTimeout=5;"
Const stSQL As String = "SELECT ShipCountry, " & _ "COUNT(Freight) AS [# Of Shipments], " & _ "SUM(Freight) AS [Total Freight] " & _ "FROM Orders " & _ "GROUP BY ShipCountry;"
Dim xlApp As Excel.Application
Try 'Finns en redan existerande Excel-sejour används denna. xlApp = Marshal.GetActiveObject("Excel.Application") Catch ex As COMException 'Om ingen Excel-insans existerar skapar vi en här. xlApp = New Excel.Application
End
Try
Dim
xlWBook
As
Excel.Workbook
=xlApp.Workbooks.
_
Dim
xlWSheet
As
Excel.Worksheet
=
DirectCast(xlWBook.Worksheets(1),
_ Dim xlRange As Excel.Range = DirectCast(xlWSheet, Excel.Worksheet).Range("B2")
'Skapa Pivotcache. Dim ptCache As Excel.PivotCache = xlWBook.PivotCaches.Add( _ SourceType:=Excel.XlPivotTableSourceType.xlExternal)
'Tilldelar Pivotcachen värden. With ptCache .Connection = stCon .CommandText = stSQL .CommandType = Excel.XlCmdType.xlCmdSql End With
'Skapar Pivottabellen. Dim ptTable As Excel.PivotTable = xlWSheet.PivotTables.Add( _ PivotCache:=ptCache, _ TableDestination:=xlRange, _ TableName:="PT_Report")
'Sätter upp Pivottabellen. With ptTable .ManualUpdate = True
.PivotFields("ShipCountry").Orientation
=
_
.PivotFields("#
Of Shipments").Orientation
=
_
.PivotFields("Total
Freight").Orientation
= _ .Format(Excel.XlPivotFormatType.xlReport2) .ManualUpdate = False End With
xlWBook.SaveAs("c:\Report.xls")
'Växlar över till Excel.. With xlApp .Visible = True .UserControl = True End With
'Förbereder objekten för automatiskt borttag av GC. ptTable = Nothing ptCache = Nothing xlWSheet = Nothing xlWBook = Nothing |