利用OFFICE 2003 OWC 绘图控件在.NET平台下实现数据图表的绘制
2013-09-17 14:38
1081 查看
来源:兰州大学网络教育学院
宋昀杰 马青 刘江
摘要:OWC,即Office Web Components,是微软随Office提供的绘图控件,设计的目的是为众多的控件容器提供交互的电子表格建模,数据报表和数据可视化功能。OWC库包含四个主要的组件:电子表格组件,图表组件,透视表组件和数据源组件。在.NET平台下,就如何利用OWC绘图控件来实现数据图表的构建。
关键词:数据制图;绘图控件;OFFICE OWC; Microsoft Visual Studio;ASP.NET;C#
1.在程序中引用OWC
要利用OWC绘图控件绘图就要将OWC引入程序,OFFICE 2003 中OWC为OWC11,默认路径在C:\Program Files\Common Files\Microsoft Shared\Web Components\11\owc11;在VS中添加OWC11,首先在:com选项卡中选择 “Misrosoft Office 11.0 Object Library”或直接选择路径为C:\Program Files\Common Files\Microsoft
Shared\Web Components\11\owc11的owc11;然后在程序后台添加程序集引用:
[align=left]using Microsoft.Office.Interop.Owc11;[/align]
[align=left]2.根据数据生成所需图表[/align]
[align=left]根据某服装厂2007年至2010年盈利额数据绘制盈利额柱形图。[/align]
2.1 X轴和Y轴的定义和设置
定义数组 YearNum、MonCount分别存放年份和年度盈利额。
string[] YearNum = new string[]{“2007年”,“2008年”,“2009年”,”2010年”};
[align=left]string[] MonCount = new string[]{“774824”,“1254489”,“808946”,“789845”};[/align]
[align=left]为 X 轴指定特定字符串,以便显示年度[/align]
[align=left]string strXdata = String.Empty;[/align]
[align=left]foreach (string strData in YearNum)[/align]
[align=left]{[/align]
[align=left]strXdata += strData + "\t";[/align]
[align=left]}[/align]
[align=left]strXdata = strXdata.Remove(strXdata.Length - 1);[/align]
[align=left]为 Y 轴指定的定字符串,以便显示金额[/align]
[align=left]string strYdata = String.Empty;[/align]
[align=left]foreach (string strValue in MonCount)[/align]
[align=left]{[/align]
[align=left]strYdata += strValue + "\t";[/align]
[align=left]}[/align]
[align=left]是否显示Y轴的图示说明[/align]
[align=left]InsertChart.Axes[0].HasTitle = true;[/align]
[align=left]为Y轴添加图示说明[/align]
[align=left]InsertChart.Axes[0].Title.Caption = "Y : 金额";[/align]
[align=left]是否显示X轴的图示说明[/align]
[align=left]InsertChart.Axes[1].HasTitle = true;[/align]
[align=left]为X轴添加图示说明[/align]
[align=left]InsertChart.Axes[1].Title.Caption = "X : 年份 ";[/align]
[align=left]2.2 创建图表容器并将图表添加如容器[/align]
[align=left]创建ChartSpace对象来放置图表[/align]
[align=left]ChartSpace laySpace = new ChartSpaceClass();[/align]
[align=left]在ChartSpace对象中添加图表[/align]
[align=left]ChChart InsertChart = laySpace.Charts.Add(0);[/align]
[align=left]2.3 设置图表类型[/align]
[align=left]指定绘制图表的类型,类型可以通过OWC.ChartChartTypeEnum枚举值得到。下面创建的是3D的柱形图表[/align]
[align=left]InsertChart.Type = ChartChartTypeEnum.chChartTypeColumnClustered3D;[/align]
[align=left]2.4 设置图表缩微图、标题[/align]
[align=left]指定图表是否需要图例标注[/align]
[align=left]InsertChart.HasLegend = true;[/align]
[align=left]指定是否需要缩微图[/align]
[align=left]InsertChart.HasLegend = false[/align]
[align=left]是否显示标题[/align]
[align=left]InsertChart.HasTitle = true;[/align]
[align=left]为图表添加标题[/align]
[align=left]InsertChart.Title.Caption = " 2007年-2010年盈利表";[/align]
[align=left]2.5 添加图表系列,并为系列绑定数据在图形对象中添加一个系列[/align]
[align=left]InsertChart.SeriesCollection.Add(0);[/align]
[align=left]给定系列名字[/align]
[align=left]InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, strXdata);[/align]
[align=left]给定系列值[/align]
[align=left]InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strYdata);[/align]
[align=left]2.6 生成图表GIF图,并设置路径及显示[/align]
[align=left]显示数据,创建GIF文件的相对路径.[/align]
string FileName = DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() +DateTime.Now.Second.ToString() +
DateTime.Now.Millisecond.ToString() + ".gif";
[align=left]objCSpace.ExportPicture(@"D:\Data\OwcImg\ChartDetail.gif", "GIF", 450, 300);[/align]
[align=left]Image1.ImageUrl = "Http://localhost/Data/OwcImg/ChartDetail.gif";[/align]
[align=left]按照以上代码步骤进行编写,结果如图1所示:[/align]
[align=left]2.7 其他属性[/align]
[align=left]图表的可设置属性还包括:图表的字体设置、设置图表的边框、设置图表系列颜色等。[/align]
[align=left]图表字体属性:objChart.Legend.Font[/align]
[align=left]图表边框属性:InsertChart.Border[/align]
[align=left]图表系列颜色:InsertChart.SeriesCollection.Points.Interior.SetSolid();[/align]
[align=left]2.8 其他类型图表[/align]
通过OWC.ChartChartTypeEnum枚举值还可以创建其他类型的图表,例如:饼图、折线图、条形图、面积图等;但是,根据数据表的不同以及在绘制图表时所选属性的不同。例如,在绘制饼图时,不能设置X轴和Y轴的属性,在选择图表类型时选择平面饼图chChartTypePie或3D饼图chChartTypePie3D; InsertChart.Type =
ChartChartTypeEnum. chChartTypePie3D;
[align=left][/align]
2.9 创建系列集合
有些情况下,根据数据需求,可能需要创建系列集合,例如要绘制2007年至2010年每个季度的数据图表,就需要创建系列集合。
这里就需要添加多个系列
[align=left]InsertChart.SeriesCollection.Add(0);[/align]
[align=left]InsertChart.SeriesCollection.Add(1);[/align]
InsertChart.SeriesCol
4000
lection.Add(2);
InsertChart.SeriesCollection.Add(3);
然后给每个系列绑定数据,先定义所需的数据变量
[align=left]string MonCount_1 = "";[/align]
[align=left]string MonCount_2 = "";[/align]
[align=left]string MonCount_3 = "";[/align]
string MonCount_4 = "";
将数据付给变量后绑定数据
InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, MonCount_1);
InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, "2007年");
InsertChart.SeriesCollection[1].SetData(ChartDimensionsEnum.chDimValues, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, MonCount_2);
InsertChart.SeriesCollection[1].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, "2008年);
InsertChart.SeriesCollection[2].SetData(ChartDimensionsEnum.chDimValues, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, MonCount_3);
InsertChart.SeriesCollection[2].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, "2009年");
InsertChart.SeriesCollection[3].SetData(ChartDimensionsEnum.chDimValues, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, MonCount_4);
InsertChart.SeriesCollection[3].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, "2010年");
[align=left]为每个季度设置不同的颜色[/align]
[align=left]InsertChart.SeriesCollection[0].Caption = "第一季度盈利额(元)";[/align]
[align=left]InsertChart.SeriesCollection[0].Interior.SetSolid("blue");[/align]
[align=left]InsertChart.SeriesCollection[1].Caption = "第二季度盈利额(元)";[/align]
[align=left]InsertChart.SeriesCollection[1].Interior.SetSolid("red");[/align]
[align=left]InsertChart.SeriesCollection[2].Caption = "第三季度盈利额(元)";[/align]
[align=left]InsertChart.SeriesCollection[2].Interior.SetSolid("green");[/align]
[align=left]InsertChart.SeriesCollection[3].Caption = "第四季度盈利额(元)";[/align]
InsertChart.SeriesCollection[3].Interior.SetSolid("purple");
接下来将图表保存为FIG图形,显示到页面即可,绘制好的数据图表如图3所示
2.10 OWC帮助
在绘制图表时,还需要实现什么效果或使用什么OWC属性,可以查阅OWC说明文档,说明文档在安装Office之后,默认在C:\Program Files\Common Files\Microsoft Shared\Web Components\11\2052目录中;下面有几个*.chm文件便是,如果没有这几个文件,尝试把Office完全安装一下,或者自定义安装的时候选中相应的选项。但它们是针对如何在Excel中使用,而不是在.Net或Java或Dephi中如何使用的,它只是按字母顺序列出了OWC组件所有的对象、集合、方法、属性、枚举,以及少量的示例代码,查找很不方便。
3.利用OWC绘制数据图表的优劣
因为OWC是随Microsoft Office安装的一款绘图控件,所以方便普及,不需要专门进行下载和配置,但是与一些专业的绘图控件相比,绘图功能有所局限,且没有较完整的说明文档,导致绘制图表时代码编写略微复杂繁琐。然而,由于OWC属于Microsoft的产品,所以在同为Microsoft产品的.NET平台下使用,有较强的兼容性和稳定性。
4.结束语
本文结合日常开发实际使用经验,参考OWC说明文档,展现出的是使用OWC控件绘制图表的部分方法,足以满足简单的数据绘图需求。OWC尚有诸多属性及方法,很多尚未被很好的理解使用,可以参照本文的思路,研究更为简洁的数据图表绘制方法。
摘自:http://www.dec.lzu.cn/ewindow/shijianchuangxin/1551.html
宋昀杰 马青 刘江
摘要:OWC,即Office Web Components,是微软随Office提供的绘图控件,设计的目的是为众多的控件容器提供交互的电子表格建模,数据报表和数据可视化功能。OWC库包含四个主要的组件:电子表格组件,图表组件,透视表组件和数据源组件。在.NET平台下,就如何利用OWC绘图控件来实现数据图表的构建。
关键词:数据制图;绘图控件;OFFICE OWC; Microsoft Visual Studio;ASP.NET;C#
1.在程序中引用OWC
要利用OWC绘图控件绘图就要将OWC引入程序,OFFICE 2003 中OWC为OWC11,默认路径在C:\Program Files\Common Files\Microsoft Shared\Web Components\11\owc11;在VS中添加OWC11,首先在:com选项卡中选择 “Misrosoft Office 11.0 Object Library”或直接选择路径为C:\Program Files\Common Files\Microsoft
Shared\Web Components\11\owc11的owc11;然后在程序后台添加程序集引用:
[align=left]using Microsoft.Office.Interop.Owc11;[/align]
[align=left]2.根据数据生成所需图表[/align]
[align=left]根据某服装厂2007年至2010年盈利额数据绘制盈利额柱形图。[/align]
2.1 X轴和Y轴的定义和设置
定义数组 YearNum、MonCount分别存放年份和年度盈利额。
string[] YearNum = new string[]{“2007年”,“2008年”,“2009年”,”2010年”};
[align=left]string[] MonCount = new string[]{“774824”,“1254489”,“808946”,“789845”};[/align]
[align=left]为 X 轴指定特定字符串,以便显示年度[/align]
[align=left]string strXdata = String.Empty;[/align]
[align=left]foreach (string strData in YearNum)[/align]
[align=left]{[/align]
[align=left]strXdata += strData + "\t";[/align]
[align=left]}[/align]
[align=left]strXdata = strXdata.Remove(strXdata.Length - 1);[/align]
[align=left]为 Y 轴指定的定字符串,以便显示金额[/align]
[align=left]string strYdata = String.Empty;[/align]
[align=left]foreach (string strValue in MonCount)[/align]
[align=left]{[/align]
[align=left]strYdata += strValue + "\t";[/align]
[align=left]}[/align]
[align=left]是否显示Y轴的图示说明[/align]
[align=left]InsertChart.Axes[0].HasTitle = true;[/align]
[align=left]为Y轴添加图示说明[/align]
[align=left]InsertChart.Axes[0].Title.Caption = "Y : 金额";[/align]
[align=left]是否显示X轴的图示说明[/align]
[align=left]InsertChart.Axes[1].HasTitle = true;[/align]
[align=left]为X轴添加图示说明[/align]
[align=left]InsertChart.Axes[1].Title.Caption = "X : 年份 ";[/align]
[align=left]2.2 创建图表容器并将图表添加如容器[/align]
[align=left]创建ChartSpace对象来放置图表[/align]
[align=left]ChartSpace laySpace = new ChartSpaceClass();[/align]
[align=left]在ChartSpace对象中添加图表[/align]
[align=left]ChChart InsertChart = laySpace.Charts.Add(0);[/align]
[align=left]2.3 设置图表类型[/align]
[align=left]指定绘制图表的类型,类型可以通过OWC.ChartChartTypeEnum枚举值得到。下面创建的是3D的柱形图表[/align]
[align=left]InsertChart.Type = ChartChartTypeEnum.chChartTypeColumnClustered3D;[/align]
[align=left]2.4 设置图表缩微图、标题[/align]
[align=left]指定图表是否需要图例标注[/align]
[align=left]InsertChart.HasLegend = true;[/align]
[align=left]指定是否需要缩微图[/align]
[align=left]InsertChart.HasLegend = false[/align]
[align=left]是否显示标题[/align]
[align=left]InsertChart.HasTitle = true;[/align]
[align=left]为图表添加标题[/align]
[align=left]InsertChart.Title.Caption = " 2007年-2010年盈利表";[/align]
[align=left]2.5 添加图表系列,并为系列绑定数据在图形对象中添加一个系列[/align]
[align=left]InsertChart.SeriesCollection.Add(0);[/align]
[align=left]给定系列名字[/align]
[align=left]InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, strXdata);[/align]
[align=left]给定系列值[/align]
[align=left]InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, strYdata);[/align]
[align=left]2.6 生成图表GIF图,并设置路径及显示[/align]
[align=left]显示数据,创建GIF文件的相对路径.[/align]
string FileName = DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() +DateTime.Now.Second.ToString() +
DateTime.Now.Millisecond.ToString() + ".gif";
[align=left]objCSpace.ExportPicture(@"D:\Data\OwcImg\ChartDetail.gif", "GIF", 450, 300);[/align]
[align=left]Image1.ImageUrl = "Http://localhost/Data/OwcImg/ChartDetail.gif";[/align]
[align=left]按照以上代码步骤进行编写,结果如图1所示:[/align]
[align=left]2.7 其他属性[/align]
[align=left]图表的可设置属性还包括:图表的字体设置、设置图表的边框、设置图表系列颜色等。[/align]
[align=left]图表字体属性:objChart.Legend.Font[/align]
[align=left]图表边框属性:InsertChart.Border[/align]
[align=left]图表系列颜色:InsertChart.SeriesCollection.Points.Interior.SetSolid();[/align]
[align=left]2.8 其他类型图表[/align]
通过OWC.ChartChartTypeEnum枚举值还可以创建其他类型的图表,例如:饼图、折线图、条形图、面积图等;但是,根据数据表的不同以及在绘制图表时所选属性的不同。例如,在绘制饼图时,不能设置X轴和Y轴的属性,在选择图表类型时选择平面饼图chChartTypePie或3D饼图chChartTypePie3D; InsertChart.Type =
ChartChartTypeEnum. chChartTypePie3D;
[align=left][/align]
2.9 创建系列集合
有些情况下,根据数据需求,可能需要创建系列集合,例如要绘制2007年至2010年每个季度的数据图表,就需要创建系列集合。
这里就需要添加多个系列
[align=left]InsertChart.SeriesCollection.Add(0);[/align]
[align=left]InsertChart.SeriesCollection.Add(1);[/align]
InsertChart.SeriesCol
4000
lection.Add(2);
InsertChart.SeriesCollection.Add(3);
然后给每个系列绑定数据,先定义所需的数据变量
[align=left]string MonCount_1 = "";[/align]
[align=left]string MonCount_2 = "";[/align]
[align=left]string MonCount_3 = "";[/align]
string MonCount_4 = "";
将数据付给变量后绑定数据
InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, MonCount_1);
InsertChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, "2007年");
InsertChart.SeriesCollection[1].SetData(ChartDimensionsEnum.chDimValues, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, MonCount_2);
InsertChart.SeriesCollection[1].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, "2008年);
InsertChart.SeriesCollection[2].SetData(ChartDimensionsEnum.chDimValues, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, MonCount_3);
InsertChart.SeriesCollection[2].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, "2009年");
InsertChart.SeriesCollection[3].SetData(ChartDimensionsEnum.chDimValues, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, MonCount_4);
InsertChart.SeriesCollection[3].SetData(ChartDimensionsEnum.chDimCategories, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, "2010年");
[align=left]为每个季度设置不同的颜色[/align]
[align=left]InsertChart.SeriesCollection[0].Caption = "第一季度盈利额(元)";[/align]
[align=left]InsertChart.SeriesCollection[0].Interior.SetSolid("blue");[/align]
[align=left]InsertChart.SeriesCollection[1].Caption = "第二季度盈利额(元)";[/align]
[align=left]InsertChart.SeriesCollection[1].Interior.SetSolid("red");[/align]
[align=left]InsertChart.SeriesCollection[2].Caption = "第三季度盈利额(元)";[/align]
[align=left]InsertChart.SeriesCollection[2].Interior.SetSolid("green");[/align]
[align=left]InsertChart.SeriesCollection[3].Caption = "第四季度盈利额(元)";[/align]
InsertChart.SeriesCollection[3].Interior.SetSolid("purple");
接下来将图表保存为FIG图形,显示到页面即可,绘制好的数据图表如图3所示
2.10 OWC帮助
在绘制图表时,还需要实现什么效果或使用什么OWC属性,可以查阅OWC说明文档,说明文档在安装Office之后,默认在C:\Program Files\Common Files\Microsoft Shared\Web Components\11\2052目录中;下面有几个*.chm文件便是,如果没有这几个文件,尝试把Office完全安装一下,或者自定义安装的时候选中相应的选项。但它们是针对如何在Excel中使用,而不是在.Net或Java或Dephi中如何使用的,它只是按字母顺序列出了OWC组件所有的对象、集合、方法、属性、枚举,以及少量的示例代码,查找很不方便。
3.利用OWC绘制数据图表的优劣
因为OWC是随Microsoft Office安装的一款绘图控件,所以方便普及,不需要专门进行下载和配置,但是与一些专业的绘图控件相比,绘图功能有所局限,且没有较完整的说明文档,导致绘制图表时代码编写略微复杂繁琐。然而,由于OWC属于Microsoft的产品,所以在同为Microsoft产品的.NET平台下使用,有较强的兼容性和稳定性。
4.结束语
本文结合日常开发实际使用经验,参考OWC说明文档,展现出的是使用OWC控件绘制图表的部分方法,足以满足简单的数据绘图需求。OWC尚有诸多属性及方法,很多尚未被很好的理解使用,可以参照本文的思路,研究更为简洁的数据图表绘制方法。
摘自:http://www.dec.lzu.cn/ewindow/shijianchuangxin/1551.html
相关文章推荐
- ASP中利用OWC控件实现图表功能详解
- ASP中利用OWC控件实现图表功能详解
- ASP中利用OWC控件实现图表功能详解
- ASP中利用OWC控件实现图表功能详解
- ASP中利用OWC控件实现图表功能详解
- 利用HttpWebRequest通过POST Json数据在.net后台实现不同平台间的数据传输
- ASP中利用OWC控件实现图表功能详解[zz]
- (转载)利用HttpWebRequest通过POST Json数据在.net后台实现不同平台间的数据传输
- ASP中利用OWC控件实现图表功能详解
- ASP中利用OWC控件实现图表功能详解
- 在.net中利用webbrowser控件实现WinForm与WebForm交互
- .Net语言 APP开发平台——Smobiler学习日志:如何在手机上实现散落点图表功能
- Office Web Components(OWC)绘图控件使用11个问答[转]
- C# 实现完整功能的截图控件(1)-实现绘图工具栏控件 控件实现了截图、绘制矩形、圆形、箭头、线条、文字,还需要可以撤销绘制步骤、保存图形等功能,基本实现了跟QQ2008截图一样的功能,还可以更
- 利用MagicLibrary控件实现类似VsNet平台界面
- .Net语言 APP开发平台——Smobiler学习日志:如何在手机上实现折线图表
- .Net语言 APP开发平台——Smobiler学习日志:如何在手机上实现折线图表
- .NET实现Office Excel自定义公式 广泛应用于报表与数据分析
- .net 中利用owc 画制图表
- 实现ADO,Excel,Aceess,.NET托管代码见的相互导入导出,利用代码实现数据的相互转换