您的位置:首页 > 编程语言 > C#

C#利用OWC组件生成数据报表

2012-06-27 21:34 489 查看
OWC

Office Web Components是一组的COM控件,设计的目的是为众多的控件容器提供交互的电子表格建模,数据报表和数据可视化功能。OWC库包含四个主要的组件:电子表格组件,图表组件,透视表组件和数据源组件。在Office 2003以后的版本中不再有OWC组件了,需要到微软网站下载OWC组件

代码实例:

OWCDemo.aspx页面 

<table border="1" width="400">
<tr>
<td>
柱状图
</td>
<td>
饼图
</td>
<td>
折线图
</td>
</tr>
<tr>
<td>
<asp:Image ID="imgChartTypeColumnClustered" runat="server" />
</td>
<td>
<asp:Image ID="imgPie" runat="server" />
</td>
<td>
<asp:Image ID="imgLine" runat="server" />
</td>
</tr>
</table>

OWCDemo.aspx.cs页面 

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Microsoft.Office.Interop.Owc11;

public partial class OWCDemo : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
ShowChartTypeColumnClustered();
ShowChartTypePie();
ShowChartTypeLine();
}

/// <summary>
/// 生成折线图
/// </summary>
private void ShowChartTypeLine()
{
//创建图形容器对象
ChartSpace chartSpace = new ChartSpace();
//添加图象对象
ChChart chChart = chartSpace.Charts.Add(0);
chChart.Type = ChartChartTypeEnum.chChartTypeLine;//折线图

//设置图形对象的边框颜色
chChart.Border.Color = "Red";
//设置图形对象具有标题
chChart.HasTitle = true;
//设置图形对象的标题
chChart.Title.Caption = "销售记录";
//设置图形对象的标题字体大小
chChart.Title.Font.Size = 12;
//设置图形对象的标题字体加粗
chChart.Title.Font.Bold = true;
//设置图形对象的标题颜色
chChart.Title.Font.Color = "Blue";
//设置是否显示图形,即每种颜色的说明
chChart.HasLegend = true;
//设置图形对象的字体大小
chChart.Legend.Font.Size = 10;
//设置图形对象的关联的文字位置
chChart.Legend.Position = ChartLegendPositionEnum.chLegendPositionBottom;

//设置显示X轴上的标题
chChart.Axes[0].HasTitle = true;
//设置X轴上的标题
chChart.Axes[0].Title.Caption = "月份";

//设置显示Y轴上的标题
chChart.Axes[1].HasTitle = true;
//设置Y轴上的标题
chChart.Axes[1].Title.Caption = "销量";

//第一项------------------------------------------------------------------------------
ChSeries chSeries = chChart.SeriesCollection.Add(0);
//设置系列关联的名字,注意各个数值之间必须以'\t'分隔,否则会被当作一个数据
chSeries.SetData(ChartDimensionsEnum.chDimCategories, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "1\t2\t3\t4\t5\t6\t7\t8\t9\t10\t11\t12");
//设置系列的名字
chSeries.SetData(ChartDimensionsEnum.chDimSeriesNames, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "X公司");
//设置系列的值,注意各个数值之间必须以'\t'分隔,否则会被当作一个数据
chSeries.SetData(ChartDimensionsEnum.chDimValues, -1, "300\t100\t643\t200\t300\t100\t643\t200\t300\t100\t643\t200");
//在柱状图里显示数值
//chSeries.DataLabelsCollection.Add();
//chSeries.DataLabelsCollection[0].HasValue = true;
//chChart.SeriesCollection[0].DataLabelsCollection.Add();
//chChart.SeriesCollection[0].DataLabelsCollection[0].HasValue = true;

//第二项--------------------------------------------------------------------------------------
chSeries = chChart.SeriesCollection.Add(0);
//设置系列关联的名字,注意各个数值之间必须以'\t'分隔,否则会被当作一个数据
//chSeries.SetData(ChartDimensionsEnum.chDimCategories, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "1\t2\t3\t4\t5\t6\t7\t8\t9\t10\t11\t12");
//设置系列的名字
chSeries.SetData(ChartDimensionsEnum.chDimSeriesNames, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "Y公司");
//设置系列的值,注意各个数值之间必须以'\t'分隔,否则会被当作一个数据
chSeries.SetData(ChartDimensionsEnum.chDimValues, -1, "200\t300\t543\t300\t200\t600\t443\t700\t400\t300\t543\t700");
//在柱状图里显示数值
//chSeries.DataLabelsCollection.Add();
//chSeries.DataLabelsCollection[0].HasValue = true;
//chChart.SeriesCollection[1].DataLabelsCollection.Add();
//chChart.SeriesCollection[1].DataLabelsCollection[0].HasValue = true;
//结束--------------------------------------------------------------------------------------------------

//设置要保存的图片的名字
string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + "Line.jpg";
//设置图片的保存路径
string filePath = Server.MapPath("~/images/") + fileName;
//将当前图形对象导出成图片文件保存到磁盘上
chartSpace.ExportPicture(filePath, "jpg", 300, 300);
//设置Image控件的Url地址以便显示
imgLine.ImageUrl = "images/" + fileName;
}
/// <summary>
/// 生成饼图
/// </summary>
private void ShowChartTypePie()
{
//创建图形容器对象
ChartSpace chartSpace = new ChartSpace();
//添加图象对象
ChChart chChart = chartSpace.Charts.Add(0);
chChart.Type = ChartChartTypeEnum.chChartTypePie;//饼图

//chChart.Border.Color = "green";
//设置图形对象具有标题
chChart.HasTitle = true;
//设置图形对象的标题
chChart.Title.Caption = "上网方式统计";
//设置图形对象的标题字体大小
chChart.Title.Font.Size = 12;
//设置图形对象的标题字体加粗
chChart.Title.Font.Bold = true;
//设置图形对象的标题颜色
chChart.Title.Font.Color = "Blue";
//设置是否显示图形 ,即每种颜色的说明
chChart.HasLegend = true;
//设置图形对象的字体大小
chChart.Legend.Font.Size = 10;
//设置图形对象的关联的文字位置
chChart.Legend.Position = ChartLegendPositionEnum.chLegendPositionBottom;

ChSeries chSeries = chChart.SeriesCollection.Add(0);
//设置系列的值,注意各个数值之间必须以'\t'分隔,否则会被当作一个数据
chSeries.SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "16.3\t59.3\t8.3\t16.1");
//设置系列关联的名字,注意各个数值之间必须以'\t'分隔,否则会被当作一个数据
chSeries.SetData(ChartDimensionsEnum.chDimCategories, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "拨号\tASDL\t光纤\t小区宽带");

chSeries.DataLabelsCollection.Add();
//chSeries.DataLabelsCollection[0].HasValue = true;
chSeries.DataLabelsCollection[0].HasPercentage = true;

//设置要保存的图片的名字
string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + "Pie.jpg";
//设置图片的保存路径
string filePath = Server.MapPath("~/images/") + fileName;
//将当前图形对象导出成图片文件保存到磁盘上
chartSpace.ExportPicture(filePath, "jpg", 300, 300);
//设置Image控件的Url地址以便显示
imgPie.ImageUrl = "images/" + fileName;
}

/// <summary>
/// 生成柱状图
/// </summary>
protected void ShowChartTypeColumnClustered()
{
//创建图形容器对象
ChartSpace chartSpace = new ChartSpace();
//添加图象对象
ChChart chChart = chartSpace.Charts.Add(0);
//设置图形对象图例类型,这里设置成柱状图,
//注意:图形类型不同,所用到的属性可能就不会相同,比如饼图就不能设置X,Y轴的属性
chChart.Type = ChartChartTypeEnum.chChartTypeColumnClustered;//柱状图
//chChart.Type = ChartChartTypeEnum.chChartTypeLine;//折线图
//chChart.Type = ChartChartTypeEnum.chChartTypeArea;//面积图
//chChart.Type = ChartChartTypeEnum.chChartTypeBarClustered;//条形图
//chChart.Type = ChartChartTypeEnum.chChartTypePie;//饼图

//设置图形对象的边框颜色
chChart.Border.Color = "Red";
//设置图形对象具有标题
chChart.HasTitle = true;
//设置图形对象的标题
chChart.Title.Caption = "报表标题";
//设置图形对象的标题字体大小
chChart.Title.Font.Size = 12;
//设置图形对象的标题字体加粗
chChart.Title.Font.Bold = true;
//设置图形对象的标题颜色
chChart.Title.Font.Color = "Blue";
//设置是否显示图形,即每种颜色的说明
chChart.HasLegend = true;
//设置图形对象的字体大小
chChart.Legend.Font.Size = 10;
//设置图形对象的关联的文字位置
chChart.Legend.Position = ChartLegendPositionEnum.chLegendPositionBottom;

//设置显示X轴上的标题
chChart.Axes[0].HasTitle = true;
//设置X轴标题
chChart.Axes[0].Title.Caption = "人物";
//设置显示Y轴上的标题
chChart.Axes[1].HasTitle = true;
//设置Y轴标题
chChart.Axes[1].Title.Caption = "数量";

//第一项-----------------------------------------------------------------------------
ChSeries chSeries = chChart.SeriesCollection.Add(0);
//设置系列关联的名字,注意各个数值之间必须以'\t'分隔,否则会被当作一个数据
chSeries.SetData(ChartDimensionsEnum.chDimCategories, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "周公\t关公\t张公\t朱公");
//设置系列的名字
chSeries.SetData(ChartDimensionsEnum.chDimSeriesNames, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "战斗力");
//设置系列的值,注意各个数值之间必须以'\t'分隔,否则会被当作一个数据
chSeries.SetData(ChartDimensionsEnum.chDimValues, -1, "800\t998\t990\t234");
//在柱状图里显示数值
chSeries.DataLabelsCollection.Add();
chSeries.DataLabelsCollection[0].HasValue = true;

//第二项----------------------------------------------------------------------------------------------
chSeries = chChart.SeriesCollection.Add(1);
//设置系列的名字
chSeries.SetData(ChartDimensionsEnum.chDimSeriesNames, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "幽默指数");
chSeries.SetData(ChartDimensionsEnum.chDimValues, (int)ChartSpecialDataSourcesEnum.chDataLiteral, "999\t580\t320\t960");
//在柱状图里显示数值
chSeries.DataLabelsCollection.Add();
chSeries.DataLabelsCollection[0].HasValue = true;
//结束---------------------------------------------------------------------------------------------------------------

//设置要保存的图片的名字
string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + "ColumnClustered.jpg";
//设置图片的保存路径
string filePath = Server.MapPath("~/images/") + fileName;
//将当前图形对象导出成图片文件保存到磁盘上
chartSpace.ExportPicture(filePath, "jpg", 300, 300);
//设置Image控件的Url地址以便显示
imgChartTypeColumnClustered.ImageUrl = "images/" + fileName;

}
}


运行运行结果:



本实例相关源码下载地址为:

http://download.csdn.net/detail/idays021/4397560
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息