我想要一个有统计图表的例子,谁能给我吗?

kitty81 2003-07-31 12:10:35
我想要一个有统计图表的例子,谁能给我吗?

kitty81@163.com
...全文
116 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kitty81 2003-07-31
  • 打赏
  • 举报
回复
谢谢各位大哥哥!

pinghero(追风)
已经收到,你的例子很好!谢谢!
pinghero 2003-07-31
  • 打赏
  • 举报
回复
已经发到你的邮箱,请查收!
孟子E章 2003-07-31
  • 打赏
  • 举报
回复
图形和图表是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:

<%@ Page Language=""vb"" AutoEventWireup=""false"" Codebehind=""OWC.aspx.vb"" Inherits=""aspxWeb.OWC""%>
<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.0 Transitional//EN"" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name=""GENERATOR"" Content=""Microsoft Visual Studio 7.0"">
<meta name=""CODE_LANGUAGE"" Content=""C#"">
<meta name=""vs_defaultClientScript"" content=""JavaScript"">
<meta name=""vs_targetSchema"" content=""http://schemas.microsoft.com/intellisense/ie5"">
</HEAD>
<body MS_POSITIONING=""GridLayout"">
<form id=""Form1"" method=""post"" runat=""server"">
<asp:placeholder id=""ChartHolder"" runat=""server""></asp:placeholder>
</form>
</body>
</HTML>


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 窗体设计器所必需的。
<System.Diagnostics.DebuggerStepThrough()> 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 = ""<IMG SRC='"" + strRelativePath + ""'/>""

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 = ""<IMG SRC='"" + strRelativePath + ""'/>"";
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);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
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');

  • 打赏
  • 举报
回复
我下午给你!

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧