国产探花免费观看_亚洲丰满少妇自慰呻吟_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
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 伽师县| 绥宁县| 江油市| 田阳县| 色达县| 乐安县| 华坪县| 河津市| 全州县| 西宁市| 石柱| 南充市| 亚东县| 扶风县| 英山县| 望奎县| 澎湖县| 安徽省| 望谟县| 霍邱县| 海城市| 潜江市| 南陵县| 乐昌市| 南投县| 苏尼特左旗| 榆树市| 固始县| 湘潭市| 镇雄县| 中西区| 哈巴河县| 南丰县| 隆尧县| 新营市| 泰来县| 塘沽区| 临沭县| 县级市| 莱芜市| 万州区|