项目中牵涉到数据报表统计,客户需要生成柱形图进行统计。首先想到用OWC(Office Web Components),owc11控件是office图表控件(owc10是officeXP中的组件,owc11为office2003的组件,组件路径在:C:\Program Files\Common Files\Microsoft Shared\Web Components\11\owc11,帮助文件的路径为C:\Program Files\Common Files\Microsoft Shared\Web Components\11\2052),调用它可以生成三维图、柱状图、饼状图、趋势图和误差图等。)
要是想OWC生成柱形图表,首先必须引用OWC11才能使用其中的方法。下面是我通过参考文档实现的效果:(柱形图效果)
下面是参考代码:(仅供参考)
ChartSpace owcChartSpace = new ChartSpace();//创建ChartSpace对象来放置图表
ChChart chart = owcChartSpace.Charts.Add(0);//在ChartSpace对象中添加图表,Add方法返回chart对象
chart.Type = ChartChartTypeEnum.chChartTypeColumnClustered;//指定图表的类型。类型由OWC.ChartChartTypeEnum枚举值得到//Microsoft.Office.Interop.OWC.ChartChartTypeEnum
//指定图表是否需要图例
chart.HasLegend = true;
//标题
chart.HasTitle = true;
chart.Title.Caption = "祝朋友们心想事成";
//x,y轴的图示说明
chart.Axes[0].HasTitle = true;
chart.Axes[0].Title.Caption = "X:" + "月份";
chart.Axes[1].HasTitle = true;
chart.Axes[1].Title.Caption = "Y:" + "收入";
chart.SeriesCollection.Add(0); //添加一个series
//给定值
chart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues,
+(int)ChartSpecialDataSourcesEnum.chDataLiteral, "3000\t4000\t5000\t6000");
//给定分类
chart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories,
+(int)ChartSpecialDataSourcesEnum.chDataLiteral, "3月份\t6月份\t9月份\t12月份");
//自定义柱形颜色
string[] colorString ={ "red", "blue", "yellow", "green" };
for (int i = 0; i < 4; i++)
{
chart.SeriesCollection[0].Points[i].Interior.SetSolid(colorString[i]);
}
//表示柱形图上的单个数据标志
Microsoft.Office.Interop.Owc11.ChDataLabels dl = chart.SeriesCollection[0].DataLabelsCollection.Add();
dl.HasValue = true;
//保存为gif图片
string filename = DateTime.Now.ToString("yyyyMMddHHmmssff") + ".gif";
owcChartSpace.ExportPicture(@"D:\" + filename, "GIF", 500, 320);
ChChart chart = owcChartSpace.Charts.Add(0);//在ChartSpace对象中添加图表,Add方法返回chart对象
chart.Type = ChartChartTypeEnum.chChartTypeColumnClustered;//指定图表的类型。类型由OWC.ChartChartTypeEnum枚举值得到//Microsoft.Office.Interop.OWC.ChartChartTypeEnum
//指定图表是否需要图例
chart.HasLegend = true;
//标题
chart.HasTitle = true;
chart.Title.Caption = "祝朋友们心想事成";
//x,y轴的图示说明
chart.Axes[0].HasTitle = true;
chart.Axes[0].Title.Caption = "X:" + "月份";
chart.Axes[1].HasTitle = true;
chart.Axes[1].Title.Caption = "Y:" + "收入";
chart.SeriesCollection.Add(0); //添加一个series
//给定值
chart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues,
+(int)ChartSpecialDataSourcesEnum.chDataLiteral, "3000\t4000\t5000\t6000");
//给定分类
chart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories,
+(int)ChartSpecialDataSourcesEnum.chDataLiteral, "3月份\t6月份\t9月份\t12月份");
//自定义柱形颜色
string[] colorString ={ "red", "blue", "yellow", "green" };
for (int i = 0; i < 4; i++)
{
chart.SeriesCollection[0].Points[i].Interior.SetSolid(colorString[i]);
}
//表示柱形图上的单个数据标志
Microsoft.Office.Interop.Owc11.ChDataLabels dl = chart.SeriesCollection[0].DataLabelsCollection.Add();
dl.HasValue = true;
//保存为gif图片
string filename = DateTime.Now.ToString("yyyyMMddHHmmssff") + ".gif";
owcChartSpace.ExportPicture(@"D:\" + filename, "GIF", 500, 320);
如果需要生成其他图表请参考其他OWC相关资料
OWC绘图控件研究 (http://www.cnblogs.com/Athos/archive/2007/02/09/645930.html )
.net调用OWC生成报表统计图总结 (http://www.cnblogs.com/dreamof/archive/2008/06/19/1226227.html )