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

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





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值