代碼:/Files/zhuqil/Pivot.zip
數據透視表提供的數據三維視圖效果,在Microsoft Excel能創建數據透視表,但是,它并不會總是很方便使用Excel。您可能希望在Web應用程序中創建一個數據透視報表。創建一個簡單的數據透視表可能是一件非常復雜的任務。所以,我打算不但為你提供一個非常有用的工具創建簡單和高級的數據透視表,而且為你移除一些籠罩他們的神秘面紗。
目標是:我們想要有能力將datatable中的二維的數據轉換成三維視圖。
在大多數情況下,你會從數據庫的查詢數據填充數據表,例如
該查詢會產生下面的數據表:
Sales Person | PRoduct | Quantity | Sale Amount |
John | Pens | 200 | 350 |
John | Pencils | 400 | 500 |
John | Notebooks | 100 | 300 |
John | Rulers | 50 | 100 |
John | Calculators | 120 | 1200 |
John | Back Packs | 75 | 1500 |
Jane | Pens | 225 | 393.75 |
Jane | Pencils | 335 | 418.75 |
Jane | Notebooks | 200 | 600 |
Jane | Rulers | 75 | 150 |
Jane | Calculators | 80 | 800 |
Jane | Back Packs | 97 | 1940 |
Sally | Pens | 202 | 353.5 |
Sally | Pencils | 303 | 378.75 |
Sally | Notebooks | 198 | 600 |
Sally | Rulers | 98 | 594 |
Sally | Calculators | 80 | 800 |
Sally | Back Packs | 101 | 2020 |
Sarah | Pens | 112 | 196 |
Sarah | Pencils | 245 | 306.25 |
Sarah | Notebooks | 198 | 594 |
Sarah | Rulers | 50 | 100 |
Sarah | Calculators | 66 | 660 |
Sarah | Back Packs | 50 | 2020 |
正如你所看到的,這是一個二維表,它不是一個非常有用的報表。因此,我們得改變,將它變成更可讀的數據表。
數據透視表有3個面。
X軸構成了在表格上方的大標題。Y軸構成表的左欄,Z軸構成了X軸和Y軸對應的值。簡單的數據透視表將會對每一個x軸值都只有一個z軸列,高級的數據透視表將對于每個X軸的值會對應有多個Z軸的值。
一個非常重要的一點是,Z軸的值只能是數字。這是因為Z軸值為橫軸和縱軸的總額。使用一個非數值Z軸字段將拋出一個異常。
因此,如果你注意上面的數據表,你會發現,“Sales Person”和“Product”字段可以分配到的X軸或Y軸,但不能給z軸。在“Quantity”和“Sale Amount”字段可以被分配到z軸。
Pivot 類將數據表轉換成html table。然后您可以將它輸出到Web窗體上。那么,這只是實現的方法。如果你愿意,你可以根據這個類的邏輯創建一個用戶控件。
這部分的代碼是非常自我解釋。 你能創建一個Pivot 對象,通過傳遞一個datatable作為參數。在init()方法只分配一個空字符串值給CSS變量。如果CSS的變量是一個空字符串,構造方法將使用默認的樣式。每一個CSS變量都有一個相應的屬性。
在FindValue(...)方法在數據表中搜索的對應x軸和y軸值的Z軸值。xAxisField是X軸字段的列名(例如“Product”),而xAxisValue是在該列的值。該yAxisField是的Y軸字段的列名(例如“Sales Person”),并yAxisValue是在該列的值。該zAxisField是列名,在其中Z軸值,是您正在尋找地(例如“Sale Amount”)。
在FindValues(...)方法類似FindValue(...)方法,然而,它會返回多個z軸的值。這是用于高級的數據透視表,對應于x軸的值,您會有多個Z軸列。
這是CSS樣式的方法之一。這在X軸上使用流行的樣式(table的頂行)。如果您沒有指定一個CSS類名給這個屬性,該方法將使用默認的樣式。 CSS類將會被應用到網頁中的HTML table。
新聞熱點
疑難解答