数据透视表(pivot table)的编程

   在上一个的项目中,由于之前客户的报表使用的是pivot table,与我们一贯使用的水晶报表不一致,所以研究了一下,受益不少。

   首先介绍一下pivot table,“使用数据透视表可以汇总、分析、浏览和提供摘要数据。使用数据透视图可以在数据透视表中可视化此摘要数据,并且可以方便地查看比较、模式和趋势。数据透视表和数据透视图都能使您做出有关企业中关键数据的决策。以下部分提供了数据透视表和数据透视图的概述。”,以上是Office Online的概述,通俗的说可以看作是一个微型的数据库,原始数据隐式存储在excel文档之中,通过用户的设置显示,类似与于sqlserver的视图功能。
   
   在进行pivot table的编程之前我们需要安装Microsoft OFFICE、MS QUERY(一个excel专用的外部数据导入工具),这个工具是OFFICE的工具组件之一,默认安装模式是不会安装这个工具的,同时我们在工程项目中需要引用excel.dll对象。MS Query貌似不支持直接连接SQLServer,我们仍然需要建立一个ODBC连接在你的电脑上,到这里准备工作宣告完成。

   以下是代码:
   '--------------------------------------------------------------------------
   '--Function:   CreatePivotExcel
   '--Description:Create a pivot table in Excel 
   '--Input:        cnnsr                                  ODBC Connection
   '--                 rptPath                               generate excel path
   '--                 SP                                     Stored Procedure name     
   '--Output:      Pivot Table Excel
   '---------------------------------------------------------------------------
    Protected Sub CreatePivotExcel(ByVal cnnsr As String, ByVal rptPath As String, ByVal SP As String)
        Dim excel As Excel.Application
        Dim workbook As Excel.Workbook
        Dim sheet As Excel.Worksheet
        Dim PivotCache As Excel.PivotCache
        Dim PivotTable As Excel.PivotTable
       
       '----   configuration property  ----
        Dim dt As DataTable
        Dim obj As New Reports

        excel = New Excel.Application

       Try
            workbook = excel.Workbooks.Add(True)
            sheet = workbook.ActiveSheet

            PivotCache = workbook.PivotCaches.Add(SourceType:=2)
            PivotCache.Connection = cnnsr
            PivotCache.CommandType = Global.Excel.XlCmdType.xlCmdSql


            PivotCache.CommandText = SP  
            PivotTable = PivotCache.CreatePivotTable(sheet.Range("A4"), "sheet1", 2)

            
            PivotTable.PivotFields(field_name1).Orientation = Global.Excel.XlPivotFieldOrientation.xlDataField
            PivotTable.PivotFields(field_name2).Orientation = Global.Excel.XlPivotFieldOrientation.xlRowField
            PivotTable.PivotFields(field_name3).Orientation = Global.Excel.XlPivotFieldOrientation.xlColumnField


            workbook.Saved = True
            excel.Visible = True


            excel.ActiveWorkbook.SaveCopyAs(rptPath)
            excel.Quit()

        Catch ex As Exception
            workbook.Saved = True
            excel.Quit()
            Response.Write("Genarate Report error...")
            Response.End()
        Finally

        End Try

    End Sub

 

转载于:https://www.cnblogs.com/dengkchao/archive/2007/08/03/840808.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值