国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

ASP.NET實現類似Excel的數據透視表

2019-11-17 01:47:39
字體:
來源:轉載
供稿:網友

asp.net實現類似Excel的數據透視表

代碼:/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變量都有一個相應的屬性。

代碼privatestringFindValue(stringxAxisField,stringxAxisValue,stringyAxisField,stringyAxisValue,stringzAxisField){stringzAxisValue="";try{foreach(DataRowrowin_DataTable.Rows){if(Convert.ToString(row[xAxisField])==xAxisValue&&Convert.ToString(row[yAxisField])==yAxisValue){zAxisValue=Convert.ToString(row[zAxisField]);break;}}}catch{throw;}returnzAxisValue;}

在FindValue(...)方法在數據表中搜索的對應x軸和y軸值的Z軸值。xAxisField是X軸字段的列名(例如“Product”),而xAxisValue是在該列的值。該yAxisField是的Y軸字段的列名(例如“Sales Person”),并yAxisValue是在該列的值。該zAxisField是列名,在其中Z軸值,是您正在尋找地(例如“Sale Amount”)。

代碼privatestring[]FindValues(stringxAxisField,stringxAxisValue,stringyAxisField,stringyAxisValue,string[]zAxisFields){intzAxis=zAxisFields.Length;if(zAxis<1)zAxis++;string[]zAxisValues=newstring[zAxis];//setdefaultvaluesfor(inti=0;i<=zAxisValues.GetUpperBound(0);i++){zAxisValues[i]="0";}try{foreach(DataRowrowin_DataTable.Rows){if(Convert.ToString(row[xAxisField])==xAxisValue&&Convert.ToString(row[yAxisField])==yAxisValue){for(intz=0;z<zAxis;z++){zAxisValues[z]=Convert.ToString(row[zAxisFields[z]]);}break;}}}catch{throw;}returnzAxisValues;}

在FindValues(...)方法類似FindValue(...)方法,然而,它會返回多個z軸的值。這是用于高級的數據透視表,對應于x軸的值,您會有多個Z軸列。

代碼

這是CSS樣式的方法之一。這在X軸上使用流行的樣式(table的頂行)。如果您沒有指定一個CSS類名給這個屬性,該方法將使用默認的樣式。 CSS類將會被應用到網頁中的HTML table。

代碼///<summary>///Createsanadvanced3DPivottable.///</summary>///<paramname="xAxisField">Themainheadingatthetopofthereport.</param>///<paramname="yAxisField">Theheadingontheleftofthereport.</param>///<paramname="zAxisFields">Thesubheadingatthetopofthereport.</param>///<returns>HtmlTableControl.</returns>publicHtmlTablePivotTable(s
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁明县| 乳源| 蓝田县| 浪卡子县| 凤庆县| 东港市| 且末县| 洞口县| 呼伦贝尔市| 广昌县| 上犹县| 光泽县| 荔波县| 大悟县| 芜湖市| 米泉市| 古丈县| 渭南市| 东方市| 佛冈县| 合川市| 通化市| 永济市| 富锦市| 玉溪市| 镇原县| 泸西县| 兰州市| 深州市| 夏河县| 呈贡县| 南靖县| 林州市| 肇东市| 景泰县| 汕尾市| 普定县| 绥棱县| 固阳县| 三门县| 平定县|