分享
 
 
 

在ASP.NET中使用Office Web Components (OWC)创建统计图

王朝asp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

在ASP.NET中使用Office Web Components (OWC)创建统计图

作者:孟宪会 出自:【孟宪会之精彩世界】 发布日期:2003年5月10日 2点13分58秒

图形和图表是Web上数据表现的很好的形式,在ASP.NET,可以使用Office Web Components (OWC)来创建统计图。Office Web Component (OWC)是包含在Microsoft Office 2000中的一套组件,利用这些组件,我们可以很方便地在浏览器中或者传统的编程环境中进行数据分析和报表。比如:电子报表,图表,数据透视表等。

要在浏览器中显示图表,可以按下面的步骤进行:

从数据库中读取要生成图表的数据;

创建OWC图表;

添加必要的数据系列;

为个数据列赋数据;

定义外观;

创建GIF图形;

用IMG标记显示图形。

要生成图表的数据称为数据原,Chart Component组件支持的数据源有:实现IDataSource接口的任何数据源;ADO Recordset对象;XML文件;数组或者一定格式的文本字符串。在ASP中,我们可以用ADO Recordset对象;在.NET的ADO.NET中,由于ADO.NET没有实现IDataSource,.NET也没有提供ADO.NET DataSet对象向ADO Recordset对象的直接转换,如果你有一个 DataSet对象,你要么转换成XML文件,要么生成特殊格式的字符串才可以使用。下面就是本例子的结果:

下面是实现这种功能的VB.NET版本的ASP.NET例子与代码:

OWC.aspx:

WebForm1

OWC.aspx.vb:

Imports System

Imports OWC

Imports System.Web.UI

Public Class OWC

Inherits System.Web.UI.Page

Protected WithEvents ChartHolder As System.Web.UI.WebControls.PlaceHolder

#Region " Web 窗体设计器生成的代码 "

'该调用是 Web 窗体设计器所必需的。

Private Sub InitializeComponent()

End Sub

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init

'CODEGEN: 此方法调用是 Web 窗体设计器所必需的

'不要使用代码编辑器修改它。

InitializeComponent()

End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

'在此处放置初始化页的用户代码

'创建ChartSpace对象来放置图表

Dim objCSpace As ChartSpace = New ChartSpaceClass()

'在ChartSpace对象中添加图表,Add方法返回chart对象

Dim objChart As WCChart = objCSpace.Charts.Add(0)

'指定图表的类型。类型由OWC.ChartChartTypeEnum枚举值得到

objChart.Type = ChartChartTypeEnum.chChartTypeColumnClustered

'指定图表是否需要图例

objChart.HasLegend = True

'给定标题

objChart.HasTitle = True

objChart.Title.Caption = "1-6说数据分布图"

'给定x,y轴的图示说明

objChart.Axes(0).HasTitle = True

objChart.Axes(0).Title.Caption = "Y 轴 : 数量"

objChart.Axes(1).HasTitle = True

objChart.Axes(1).Title.Caption = "X 轴: 月份"

'计算数据

'*categories 和 values 可以用tab分割的字符串来表示*

Dim strSeriesName As String = "图例 1"

Dim strCategory As String = "1" + ControlChars.Tab + "2" + ControlChars.Tab _

+ "3" + ControlChars.Tab + "4" + ControlChars.Tab + "5" + ControlChars.Tab _

+ "6" + ControlChars.Tab

Dim strValue As String = "9" + ControlChars.Tab + "8" + ControlChars.Tab _

+ "4" + ControlChars.Tab + "10" + ControlChars.Tab + "12" + ControlChars.Tab _

+ "6" + ControlChars.Tab

'添加一个series

objChart.SeriesCollection.Add(0)

'给定series的名字

objChart.SeriesCollection(0).SetData(ChartDimensionsEnum.chDimSeriesNames,_

ChartSpecialDataSourcesEnum.chDataLiteral, strSeriesName)

'给定分类

objChart.SeriesCollection(0).SetData(ChartDimensionsEnum.chDimCategories,_

ChartSpecialDataSourcesEnum.chDataLiteral, strCategory)

'给定值

objChart.SeriesCollection(0).SetData(ChartDimensionsEnum.chDimValues,_

ChartSpecialDataSourcesEnum.chDataLiteral, strValue)

'输出成GIF文件.

Dim strAbsolutePath As String = (Server.MapPath(".")) + "\Images\test.gif"

objCSpace.ExportPicture(strAbsolutePath, "GIF", 600, 350)

'创建GIF文件的相对路径.

Dim strRelativePath As String = "Images/test.gif"

'把图片添加到placeholder.

Dim strImageTag As String = "

"

ChartHolder.Controls.Add(New LiteralControl(strImageTag))

End Sub

End Class

下面是C#版本的OWC.asp.cs

ublic class owc: System.Web.UI.Page

{

protected System.Web.UI.WebControls.PlaceHolder ChartHolder;

private void Page_Load(object sender, System.EventArgs e)

{

// 在此处放置用户代码以初始化页面

//创建ChartSpace对象来放置图表

OWC.ChartSpace objCSpace = new OWC.ChartSpaceClass ();

//在ChartSpace对象中添加图表,Add方法返回chart对象

OWC.WCChart objChart = objCSpace.Charts.Add (0);

//指定图表的类型。类型由OWC.ChartChartTypeEnum枚举值得到

objChart.Type = OWC.ChartChartTypeEnum.chChartTypeColumnClustered;

//指定图表是否需要图例

objChart.HasLegend = true;

//给定标题

objChart.HasTitle = true;

objChart.Title.Caption= "上半年分布图";

//给定x,y轴的图示说明

objChart.Axes[0].HasTitle = true;

objChart.Axes[0].Title.Caption = "Y : 数量";

objChart.Axes[1].HasTitle = true;

objChart.Axes[1].Title.Caption = "X : 月份";

//计算数据

/*categories 和 values 可以用tab分割的字符串来表示*/

string strSeriesName = "图例 1";

string strCategory = "1" + '\t' + "2" + '\t' + "3" + '\t'+"4" + '\t' + "5" + '\t' + "6" + '\t';

string strValue = "9" + '\t' + "8" + '\t' + "4" + '\t'+"10" + '\t' + "12" + '\t' + "6" + '\t';

//添加一个series

objChart.SeriesCollection.Add(0);

//给定series的名字

objChart.SeriesCollection[0].SetData (OWC.ChartDimensionsEnum.chDimSeriesNames,

+ (int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral, strSeriesName);

//给定分类

objChart.SeriesCollection[0].SetData (OWC.ChartDimensionsEnum.chDimCategories,

+ (int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral, strCategory);

//给定值

objChart.SeriesCollection[0].SetData

(OWC.ChartDimensionsEnum.chDimValues,

(int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral, strValue);

//输出成GIF文件.

string strAbsolutePath = (Server.MapPath(".")) + "\\i\\test.gif";

objCSpace.ExportPicture(strAbsolutePath, "GIF", 600, 350);

//创建GIF文件的相对路径.

string strRelativePath = "./i/test.gif";

//把图片添加到placeholder.

string strImageTag = "

";

ChartHolder.Controls.Add(new LiteralControl(strImageTag));

}

#region Web Form Designer generated code

override protected void OnInit(EventArgs e)

{

//

// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。

//

InitializeComponent();

base.OnInit(e);

}

///

/// 设计器支持所需的方法 - 不要使用代码编辑器修改

/// 此方法的内容。

///

private void InitializeComponent()

{

this.Load += new System.EventHandler(this.Page_Load);

}

#endregion

}

如果用ADO.NET的DataSet对象,可以生成以TAB分割的字符串:

strValue += (nodes.Item(j).ChildNodes.Item(0).InnerText + '\t');

strCategory += (nodes.Item(j).ChildNodes.Item(1).InnerText + '\t');

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有