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

来源:互联网 发布:mac用虚拟机玩游戏 编辑:程序博客网 时间:2024/06/06 11:48

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/houxh86/3680711