项目开发 - 使用OWC生成统计图
2008-05-11 21:08
447 查看
终于项目到了报表生成部分了。考虑用水晶报表,但是水晶报表功能太多,太复杂,所以就没有是使用了。
花了大下午的时候,做好了风格,有点类似sablog 的后台管理。然后写统计逻辑。
写了几个函数,主统计函数返回统计结果(DataTable)封装。结果包括了:
//获取表格内容格式
protected DataTable getTableFormat()
...{
DataTable dt = new DataTable();
dt.Columns.Add("id");
dt.Columns.Add("name");
dt.Columns.Add("job");
dt.Columns.Add("safePoint");
dt.Columns.Add("sanweiPoint");
dt.Columns.Add("hiddenDangerPoint");
dt.Columns.Add("accidentPoint");
dt.Columns.Add("totlePoint");
return dt;
}
用GridView显示了全部数据,接着就是考虑做图形统计信息了。
要求使用柱状图,以员工名称为横坐标,totlePoint为纵坐标生成。在网上翻了很久,终于想起来了,以前记得使用OWC貌似可以很轻松地生成图形。
OWC 全称 Office Web Components 是微软随Office提供的绘图控件,使用它能够绘制绝大部分的图形。因为OWC是com封装的,所以在.net里面需要添加com组件到项目里面方可使用。
于是就在M$网站上下载了OWC11开发包,安装上了。同时在网上找了个示例代码来研究。
在调试了几个很SB的BUG后,结果终于出炉了。嘿嘿,代码如下:
protected void btnDo_OnClick(object sender, EventArgs e)
...{
DateTime startDate, endDate;
startDate = DateTime.Parse(txtStartDate.Text);
endDate = DateTime.Parse(txtEndDate.Text);
lblNyr.Text = startDate.Year + "年" + startDate.Month + "月" + startDate.Day + "日 - " + endDate.Year + "年" + endDate.Month + "月" + endDate.Day + "日";
lblNyr.Visible = true;
DataTable dt = executeReportOfExam();
gvReport.DataSource = dt;
gvReport.DataBind();
//创建ChartSpace对象来放置图表
OWC11.ChartSpace objCSpace = new ChartSpaceClass();
//在ChartSpace对象中添加图表,Add方法返回chart对象
OWC11.ChChart objChart = objCSpace.Charts.Add(0);
//指定图表的类型。类型由OWC.ChartChartTypeEnum枚举值得到
objChart.Type = OWC11.ChartChartTypeEnum.chChartTypeColumnClustered;
//制定图标是否需要图例
objChart.HasLegend = true;
objChart.Legend.Font.Size = 10;
//给定标题
objChart.HasTitle = true;
objChart.Title.Caption = "干部安全绩效考核("+lblNyr.Text+")";
objChart.Title.Font.Color = "red";
objChart.Title.Font.Bold = true;
objChart.Title.Font.Size = 12;
//给定x,y卓的图例
objChart.Axes[0].HasTitle = true;
objChart.Axes[0].Title.Caption = "员工";
objChart.Axes[0].Title.Font.Color = "blue";
objChart.Axes[0].Title.Font.Size = 10;
objChart.Axes[0].Font.Size = 9;
objChart.Axes[1].HasTitle = true;
objChart.Axes[1].Title.Caption = "合计得分";
objChart.Axes[1].Title.Font.Color = "blue";
objChart.Axes[1].Title.Font.Size = 10;
//计算数据
/**//*categories 和 values 可以用tab分割的字符串来表示*/
String x="";
String y="";
String sn="得分";
for (Int32 i = 0; i < dt.Rows.Count; ++i)
...{
x += dt.Rows[i]["name"].ToString() + " ";
y += dt.Rows[i]["totlePoint"].ToString() + " ";
}
objChart.SeriesCollection.Add(0);
//添加一个series的名字
objChart.SeriesCollection[0].SetData(OWC11.ChartDimensionsEnum.chDimSeriesNames, (int)OWC11.ChartSpecialDataSourcesEnum.chDataLiteral, sn);
//给定分类
objChart.SeriesCollection[0].SetData(OWC11.ChartDimensionsEnum.chDimCategories, (int)OWC11.ChartSpecialDataSourcesEnum.chDataLiteral, x);
//给定值
objChart.SeriesCollection[0].SetData(OWC11.ChartDimensionsEnum.chDimValues, (int)OWC11.ChartSpecialDataSourcesEnum.chDataLiteral, y);
//输出到GIF文件
String path = (Server.MapPath("./reportImg/")) + @"safeExam.gif";
//类型,长宽
objCSpace.ExportPicture(path, "GIF", 800, 350);
imgbb.Src = "./reportImg/safeExam.gif";
abb.HRef = "./reportImg/safeExam.gif";
divPicReport.Visible = true;
}
最终效果图:
花了大下午的时候,做好了风格,有点类似sablog 的后台管理。然后写统计逻辑。
写了几个函数,主统计函数返回统计结果(DataTable)封装。结果包括了:
//获取表格内容格式
protected DataTable getTableFormat()
...{
DataTable dt = new DataTable();
dt.Columns.Add("id");
dt.Columns.Add("name");
dt.Columns.Add("job");
dt.Columns.Add("safePoint");
dt.Columns.Add("sanweiPoint");
dt.Columns.Add("hiddenDangerPoint");
dt.Columns.Add("accidentPoint");
dt.Columns.Add("totlePoint");
return dt;
}
用GridView显示了全部数据,接着就是考虑做图形统计信息了。
要求使用柱状图,以员工名称为横坐标,totlePoint为纵坐标生成。在网上翻了很久,终于想起来了,以前记得使用OWC貌似可以很轻松地生成图形。
OWC 全称 Office Web Components 是微软随Office提供的绘图控件,使用它能够绘制绝大部分的图形。因为OWC是com封装的,所以在.net里面需要添加com组件到项目里面方可使用。
于是就在M$网站上下载了OWC11开发包,安装上了。同时在网上找了个示例代码来研究。
在调试了几个很SB的BUG后,结果终于出炉了。嘿嘿,代码如下:
protected void btnDo_OnClick(object sender, EventArgs e)
...{
DateTime startDate, endDate;
startDate = DateTime.Parse(txtStartDate.Text);
endDate = DateTime.Parse(txtEndDate.Text);
lblNyr.Text = startDate.Year + "年" + startDate.Month + "月" + startDate.Day + "日 - " + endDate.Year + "年" + endDate.Month + "月" + endDate.Day + "日";
lblNyr.Visible = true;
DataTable dt = executeReportOfExam();
gvReport.DataSource = dt;
gvReport.DataBind();
//创建ChartSpace对象来放置图表
OWC11.ChartSpace objCSpace = new ChartSpaceClass();
//在ChartSpace对象中添加图表,Add方法返回chart对象
OWC11.ChChart objChart = objCSpace.Charts.Add(0);
//指定图表的类型。类型由OWC.ChartChartTypeEnum枚举值得到
objChart.Type = OWC11.ChartChartTypeEnum.chChartTypeColumnClustered;
//制定图标是否需要图例
objChart.HasLegend = true;
objChart.Legend.Font.Size = 10;
//给定标题
objChart.HasTitle = true;
objChart.Title.Caption = "干部安全绩效考核("+lblNyr.Text+")";
objChart.Title.Font.Color = "red";
objChart.Title.Font.Bold = true;
objChart.Title.Font.Size = 12;
//给定x,y卓的图例
objChart.Axes[0].HasTitle = true;
objChart.Axes[0].Title.Caption = "员工";
objChart.Axes[0].Title.Font.Color = "blue";
objChart.Axes[0].Title.Font.Size = 10;
objChart.Axes[0].Font.Size = 9;
objChart.Axes[1].HasTitle = true;
objChart.Axes[1].Title.Caption = "合计得分";
objChart.Axes[1].Title.Font.Color = "blue";
objChart.Axes[1].Title.Font.Size = 10;
//计算数据
/**//*categories 和 values 可以用tab分割的字符串来表示*/
String x="";
String y="";
String sn="得分";
for (Int32 i = 0; i < dt.Rows.Count; ++i)
...{
x += dt.Rows[i]["name"].ToString() + " ";
y += dt.Rows[i]["totlePoint"].ToString() + " ";
}
objChart.SeriesCollection.Add(0);
//添加一个series的名字
objChart.SeriesCollection[0].SetData(OWC11.ChartDimensionsEnum.chDimSeriesNames, (int)OWC11.ChartSpecialDataSourcesEnum.chDataLiteral, sn);
//给定分类
objChart.SeriesCollection[0].SetData(OWC11.ChartDimensionsEnum.chDimCategories, (int)OWC11.ChartSpecialDataSourcesEnum.chDataLiteral, x);
//给定值
objChart.SeriesCollection[0].SetData(OWC11.ChartDimensionsEnum.chDimValues, (int)OWC11.ChartSpecialDataSourcesEnum.chDataLiteral, y);
//输出到GIF文件
String path = (Server.MapPath("./reportImg/")) + @"safeExam.gif";
//类型,长宽
objCSpace.ExportPicture(path, "GIF", 800, 350);
imgbb.Src = "./reportImg/safeExam.gif";
abb.HRef = "./reportImg/safeExam.gif";
divPicReport.Visible = true;
}
最终效果图:
相关文章推荐
- 使用C#和Excel进行报表开发(三)-生成统计图(Chart)
- 使用C#和Excel进行报表开发(三)-生成统计图(Chart)
- DotNet 项目开发文档的自动生成和相关工具的使用
- 使用C#和Excel进行报表开发(三)-生成统计图(Chart)3
- 使用C#和Excel进行报表开发(三)-生成统计图(Chart)
- 使用Android Studio 开发NDK项目生成.h文件方法
- 使用C#和Excel进行报表开发(三)-生成统计图(Chart)4
- 使用C#和Excel进行报表开发(三)-生成统计图(Chart)
- C# *未能找到类型“ * ”,请确保已引用包含此类型的程序集。如果此类型为开发项目的一部分,请确保已使用针对当前平台或任意 CPU 的设置成功生成该项目
- 使用C#和Excel进行报表开发-生成统计图Chart
- 使用C#和Excel进行报表开发(三)-生成统计图(Chart)5
- 使用C#和Excel进行报表开发(三)-生成统计图(Chart)
- 使用C#和Excel进行报表开发(三)-生成统计图(Chart)
- 使用C#和Excel进行报表开发(三)-生成统计图(Chart)
- 关于使用Android Studio 开发NDK项目生成.h文件方法
- 使用C#和Excel进行报表开发(三)-生成统计图(Chart)
- 使用C#和Excel进行报表开发(三)-生成统计图(Chart)
- 使用Android Studio 开发NDK项目生成.h文件方法
- 使用C#和Excel进行报表开发(三)-生成统计图(Chart)
- 关于使用Android Studio 开发NDK项目生成.h文件方法