owc组件使用(统计分析图)

本文介绍了一个使用C#结合Office Web Components (OWC) 实现的统计图表生成系统。该系统允许用户通过选择不同的时间段和图表类型来自动生成各种类型的统计图表,如柱状图、条形图及饼图等。

页面代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="_ReportOwc.aspx.cs" Inherits="_ReportOwc" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
<link href="../images/xj_style.css" _fcksavedurl=""../images/xj_style.css"" _fcksavedurl=""../images/xj_style.css"" rel="stylesheet" type="text/css" />
     <script language="javascript" src="../System_Web_Resources.js" type="text/css"></script>  
</head>
<body onload="parent.window.document.all.myiframe.style.height=document.body.scrollHeight+10;">
    <form id="form1" runat="server">
        <table style="width: 100%" id="TABLE2" runat="server">
            <tr>
                <td align="center" colspan="1" rowspan="1" style="height: 23px; width: 949px;" valign="top">
        <table id="Table4" border="0" cellpadding="0" cellspacing="0" width="98%">
            <tr>
                <td align="left" style="height: 43px" valign="bottom" width="40%">
                    <table id="Table5" border="0" cellpadding="0" cellspacing="0" style="border-bottom: #ffffff 1px solid">
                        <tr>
                            <td class="lmstyle">
                                <img align="Middle" height="20" src="../images/blacksjbiao_big.gif" width="15" />&nbsp;
                                <asp:Label ID="LabelMailTitle" runat="server" Font-Size="14px" Text="统计图表"></asp:Label></td>
                            <td align="left">
                                <img height="27" src="../images/lmtu_right.gif" width="27" /></td>
                        </tr>
                    </table>
                </td>
                <td style="height: 43px" width="60%">
                    <div align="right">
                        <img height="41" src="../images/index2.gif" width="306" /></div>
                </td>
            </tr>
        </table>
                </td>
            </tr>
            <tr>
                <td align="left" rowspan="2" valign="top" style="width: 949px">
                <table id="Table1" border="0" cellpadding="1" cellspacing="1" width="100%">
                    <tr>
                        <td style="height: 24px">
                            选择时间段:<asp:DropDownList ID="DropDownList2" runat="server">
                            </asp:DropDownList>
                            <asp:DropDownList ID="DropDownList3" runat="server">
                            </asp:DropDownList>—
                            <asp:DropDownList ID="DropDownList4" runat="server">
                            </asp:DropDownList>
                            <asp:DropDownList ID="DropDownList5" runat="server">
                            </asp:DropDownList>&nbsp;
                            <asp:Button ID="btnSelect" runat="server" OnClick="btnSelect_Click" Text="检索" CssClass="xjbutton1" />&nbsp;&nbsp;
                            选择图表类型:
                            <asp:DropDownList ID="_DropDownListtype" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList_SelectedIndexChanged">
                            </asp:DropDownList>&nbsp; &nbsp;
                            <asp:Button ID="Button3" runat="server" Text="绘制饼图" OnClick="Button3_Click" Visible="False" CssClass="xjbutton1" />
                            <asp:Button ID="Button2" runat="server" Text="绘制条状图" OnClick="Button2_Click" Visible="False" CssClass="xjbutton1" />
                            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="绘制柱状图" Visible="False" CssClass="xjbutton1" /></td>
                    </tr>
                </table>
                </td>
            </tr>
            <tr>
            </tr>
            <tr>
                <td align="center" valign="top" style="width: 949px; height: 32px">
                <asp:Image ID="Image1" runat="server" /></td>
            </tr>
        </table>
     
            <font face="宋体">
                <asp:TreeView ID="TreeView1" runat="server" Visible="False">
                    <Nodes>
                        <asp:TreeNode Text="简单检索" Value="0"></asp:TreeNode>
                    </Nodes>
                </asp:TreeView>
                </font>
    </form>
</body>
</html>

C#代码:

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using Microsoft.Office.Interop.Owc11;
using System.Text;

public partial class _ReportOwc : System.Web.UI.Page
{
    MyCRM.DB db = new MyCRM.DB(); 
 ChartFactory chartFactory=new ChartFactory();  
 DataTable dt=new DataTable();
    DataTable treetable = new DataTable();
 OWCChart11  chart = new OWCChart11();
 string filepath =""; 
 public static Hashtable chartMap = new Hashtable();

    string type = "dept";
    string sql = "select d.name,count(d.name) from person p join dept d on d.id=p.dept where person_state='正常' group by d.name";
 public void Page_Load(object sender, System.EventArgs e)
 {      
        dt = db.ececSelectSql("select top 50 person.truename,wage.薪资 from person left join wage on person.id=wage.员工姓名");
  filepath= Server.MapPath(".") + "\\ChartImages";
  Image1.ImageUrl="";
  InitTypeMap();

        treetable = db.ececSelectSql("select col_name,show_name from tablestruct where table_name='person' order by [id]");
      
  // 在此处放置用户代码以初始化页面
  #region 按钮绘制图形
  chart.Title = "标题";
  chart.SeriesName = "图例";
  
  chart.PhaysicalImagePath = filepath;
  chart.PicHight = 320;
  chart.PicWidth = 500;
  chart.DataSource = dt;//这是你的数据源
#endregion
        if (!IsPostBack)
        {
            deleteFile();          
            //默认绘制           
            for (int i = 1; i < 13; i++)
            {
                ListItem item = new ListItem();
                item.Text = Convert.ToString(DateTime.Now.Year-i)+"年";
                item.Value = Convert.ToString(DateTime.Now.Year-i);
                DropDownList2.Items.Add(item);
                DropDownList4.Items.Add(item);

                item = new ListItem();
                item.Text = Convert.ToString(i) + "月";
                item.Value = Convert.ToString(i);
                DropDownList3.Items.Add(item);
                DropDownList5.Items.Add(item);
            }          
        }

        if (Request.QueryString["type"] != null)
        {
            type = Request.QueryString["type"].ToString().Trim();
            //Response.Write(type);
        }
        else
        {
            type = "dept";
        }

        switch (type)
        {
            case "post"://职务
                sql = "select d.post,count(d.post) from person p join post d on d.id=p.post where person_state='正常' group by d.post";
                break;
            case "dept"://部门
                sql = "select d.name,count(d.name) from person p join dept d on d.id=p.dept where person_state='正常' group by d.name";
                break;
            case "sex"://性别
                sql = "select sex,count(sex) from person where person_state='正常' group by sex";
                break;
            case "PoliticsVisage"://政治面貌
                sql = "select PoliticsVisage,count(PoliticsVisage) from person where person_state='正常' group by PoliticsVisage";
                break;
            case "person_state"://员工状态
                sql = "select [person_state],count([person_state]) from person  group by [person_state]";
                break;
            default:
                break;
        }
        DropDownList_SelectedIndexChanged(sender, e);
 }

    public void deleteFile()
 {
        string[] strFileName=System.IO.Directory.GetFiles(Server.MapPath(".")+@"\ChartImages\");
  for(int i=0;i<strFileName.Length;i++)
  {    
   System.IO.FileInfo file=new System.IO.FileInfo(strFileName[i]);
   string strtemp=file.Name.Split('.')[0];
            if (strtemp.Length > 8)
            {              
                strtemp = strtemp.Substring(0, 4) + "-" + strtemp.Substring(4, 2) + "-" + strtemp.Substring(6, 2);
                if (Convert.ToDateTime(strtemp) < DateTime.Now.AddDays(-1))
                {
                    if (file.Exists)
                    {
                        file.Delete();
                    }
                }
            }
  }  
 }
    public void InitTypeMap()
    {
        chartMap.Clear();
        string str = "";
        if (_DropDownListtype.Items.Count > 0)
        {
            str = _DropDownListtype.SelectedItem.Text;
        }

        _DropDownListtype.Items.Clear();
        Microsoft.Office.Interop.Owc11.ChartChartTypeEnum[] chartTypes = new Microsoft.Office.Interop.Owc11.ChartChartTypeEnum[]{ ChartChartTypeEnum.chChartTypeColumnClustered,
                      ChartChartTypeEnum.chChartTypeColumn3D,
                      ChartChartTypeEnum.chChartTypeBarClustered,
                      ChartChartTypeEnum.chChartTypeBar3D,
                      ChartChartTypeEnum.chChartTypeArea,
                      ChartChartTypeEnum.chChartTypeArea3D,
                      ChartChartTypeEnum.chChartTypeDoughnut,
                      ChartChartTypeEnum.chChartTypeLineStacked,
                      ChartChartTypeEnum.chChartTypeLine3D,
                      ChartChartTypeEnum.chChartTypeLineMarkers,
                      ChartChartTypeEnum.chChartTypePie,
                      ChartChartTypeEnum.chChartTypePie3D,
                      ChartChartTypeEnum.chChartTypeRadarSmoothLine,
                      ChartChartTypeEnum.chChartTypeSmoothLine};
        string[] chartTypesCh = new string[] { "垂直柱状统计图", "3D垂直柱状统计图", "水平柱状统计图", "3D水平柱状统计图", "区域统计图", "3D区域统计图", "中空饼图", "折线统计图", "3D折线统计图", "折线带点统计图", "饼图", "3D饼图", "网状统计图", "弧线统计图" };

        for (int i = 0; i < chartTypes.Length; i++)
        {
            chartMap.Add(chartTypesCh[i], chartTypes[i]);
        }

        for (int i = 0; i < chartTypes.Length; i++)
        {
            ListItem ii = new ListItem(chartTypesCh[i]);
            _DropDownListtype.Items.Add(ii);
        }
        foreach (ListItem ii in _DropDownListtype.Items)
        {
            if (ii.Text == str)
            {
                ii.Selected = true;
            }
        }
    }

    #region 按钮事件
    public void Button1_Click(object sender, System.EventArgs e)
    {
        this.Image1.ImageUrl = @".\ChartImages\" + chart.CreateColumn();//显示给图像控件。
    }

    public void Button2_Click(object sender, System.EventArgs e)
    {
        this.Image1.ImageUrl = @".\ChartImages\" + chart.CreateBar();//显示给图像控件。
    }

    public void Button3_Click(object sender, System.EventArgs e)
    {
        this.Image1.ImageUrl = @".\ChartImages\" + chart.CreatePie();//显示给图像控件。
    }
    //按钮绘制类
    public class OWCChart11
    {

        #region 属性
        public string _phaysicalimagepath;
        public string _title;
        public string _seriesname;
        public int _picwidth;
        public int _pichight;
        public DataTable _datasource;
        public string strCategory;
        public string strValue;

        /// <summary>
        /// 图片存放路径
        /// </summary>
        public string PhaysicalImagePath
        {
            set { _phaysicalimagepath = value; }
            get { return _phaysicalimagepath; }
        }
        /// <summary>
        /// 图片标题
        /// </summary>
        public string Title
        {
            set { _title = value; }
            get { return _title; }
        }
        /// <summary>
        /// 图片说明
        /// </summary>
        public string SeriesName
        {
            set { _seriesname = value; }
            get { return _seriesname; }
        }
        /// <summary>
        /// 图片宽度
        /// </summary>
        public int PicWidth
        {
            set { _picwidth = value; }
            get { return _picwidth; }
        }
        /// <summary>
        /// 图片高度
        /// </summary>
        public int PicHight
        {
            set { _pichight = value; }
            get { return _pichight; }
        }
        /// <summary>
        /// 图片数据源
        /// </summary>
        public DataTable DataSource
        {
            set
            {
                _datasource = value;
                strCategory = GetColumnsStr(_datasource);
                strValue = GetValueStr(_datasource);
            }
            get { return _datasource; }
        }
        /// <summary>
        /// 列类型
        /// </summary>
        public string GetColumnsStr(DataTable dt)
        {
            StringBuilder strList = new StringBuilder();
            foreach (DataRow r in dt.Rows)
            {
                strList.Append(r[0].ToString() + '\t');
            }
            return strList.ToString();
        }
        /// <summary>
        /// 列值
        /// </summary>
        public string GetValueStr(DataTable dt)
        {
            StringBuilder strList = new StringBuilder();
            foreach (DataRow r in dt.Rows)
            {
                strList.Append(r[1].ToString() + '\t');
            }
            return strList.ToString();
        }

        #endregion


        public OWCChart11()
        {
        }
        public OWCChart11(string PhaysicalImagePath, string Title, string SeriesName)
        {
            _phaysicalimagepath = PhaysicalImagePath;
            _title = Title;
            _seriesname = SeriesName;
        }


        /// <summary>
        /// 柱形图
        /// </summary>
        /// <returns></returns>
        public string CreateColumn()
        {
            Microsoft.Office.Interop.Owc11.ChartSpace objCSpace = new Microsoft.Office.Interop.Owc11.ChartSpaceClass();//创建ChartSpace对象来放置图表  
            Microsoft.Office.Interop.Owc11.ChChart objChart = objCSpace.Charts.Add(0);//在ChartSpace对象中添加图表,Add方法返回chart对象

            //指定图表的类型。类型由OWC.ChartChartTypeEnum枚举值得到//Microsoft.Office.Interop.OWC.ChartChartTypeEnum
            //objChart.Type = Microsoft.Office.Interop.Owc11.ChartChartTypeEnum.chChartTypeColumnClustered;

            objChart.Type = Microsoft.Office.Interop.Owc11.ChartChartTypeEnum.chChartTypeColumnClustered;
            //指定图表是否需要图例
            objChart.HasLegend = true;

            //标题
            objChart.HasTitle = true;
            objChart.Title.Caption = _title;
            objChart.Title.Font.Bold = true;
            objChart.Title.Font.Color = "blue";

            #region 样式设置

            //旋转
            objChart.Rotation = 360;//表示指定三维图表的旋转角度
            objChart.Inclination = 10;//表示指定三维图表的视图斜率。有效范围为 -90 到 90

            //背景颜色
            objChart.PlotArea.Interior.Color = "yellow";

            //底座颜色
            objChart.PlotArea.Floor.Interior.Color = "green";

            objChart.Overlap = 50;//单个类别中标志之间的重叠量

            #endregion

            //x,y轴的图示说明
            objChart.Axes[0].HasTitle = true;
            objChart.Axes[0].Title.Caption = "X : 类别";
            objChart.Axes[1].HasTitle = true;
            objChart.Axes[1].Title.Caption = "Y : 数量";


            //添加一个series
            Microsoft.Office.Interop.Owc11.ChSeries ThisChSeries = objChart.SeriesCollection.Add(0);

            //给定series的名字
            ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimSeriesNames,
                Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), SeriesName);
            //给定分类
            ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimCategories,
                Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strCategory);
            //给定值
            ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimValues,
                Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strValue);

            Microsoft.Office.Interop.Owc11.ChDataLabels dl = objChart.SeriesCollection[0].DataLabelsCollection.Add();
            dl.HasValue = true;
            //   dl.Position=Microsoft.Office.Interop.Owc11.ChartDataLabelPositionEnum.chLabelPositionOutsideEnd;


            string filename = DateTime.Now.ToString("yyyyMMddHHmmssff") + ".gif";
            string strAbsolutePath = _phaysicalimagepath + "\\" + filename;
            objCSpace.ExportPicture(strAbsolutePath, "GIF", _picwidth, _pichight);//输出成GIF文件.

            return filename;

        }


        /// <summary>
        /// 饼图
        /// </summary>
        /// <returns></returns>
        public string CreatePie()
        {
            Microsoft.Office.Interop.Owc11.ChartSpace objCSpace = new Microsoft.Office.Interop.Owc11.ChartSpaceClass();//创建ChartSpace对象来放置图表  
            Microsoft.Office.Interop.Owc11.ChChart objChart = objCSpace.Charts.Add(0);//在ChartSpace对象中添加图表,Add方法返回chart对象


            //指定图表的类型
            objChart.Type = Microsoft.Office.Interop.Owc11.ChartChartTypeEnum.chChartTypePie;

            //指定图表是否需要图例
            objChart.HasLegend = true;

            //标题
            objChart.HasTitle = true;
            objChart.Title.Caption = _title;


            //添加一个series
            Microsoft.Office.Interop.Owc11.ChSeries ThisChSeries = objChart.SeriesCollection.Add(0);

            //给定series的名字
            ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimSeriesNames,
                Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), SeriesName);
            //给定分类
            ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimCategories,
                Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strCategory);
            //给定值
            ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimValues,
                Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strValue);


            //表示系列或趋势线上的单个数据标志
            Microsoft.Office.Interop.Owc11.ChDataLabels dl = objChart.SeriesCollection[0].DataLabelsCollection.Add();
            dl.HasValue = true;
            dl.HasPercentage = true;
            //图表绘图区的图例放置在右侧。
            //   dl.Position=Microsoft.Office.Interop.Owc11.ChartDataLabelPositionEnum.chLabelPositionRight;

            string filename = DateTime.Now.ToString("yyyyMMddHHmmssff") + ".gif";
            string strAbsolutePath = _phaysicalimagepath + "\\" + filename;
            objCSpace.ExportPicture(strAbsolutePath, "GIF", _picwidth, _pichight);//输出成GIF文件.

            return filename;
        }

        /// <summary>
        /// 条形图
        /// </summary>
        /// <returns></returns>
        public string CreateBar()
        {
            Microsoft.Office.Interop.Owc11.ChartSpace objCSpace = new Microsoft.Office.Interop.Owc11.ChartSpaceClass();//创建ChartSpace对象来放置图表  
            Microsoft.Office.Interop.Owc11.ChChart objChart = objCSpace.Charts.Add(0);//在ChartSpace对象中添加图表,Add方法返回chart对象

            //指定图表的类型。类型由OWC.ChartChartTypeEnum枚举值得到//Microsoft.Office.Interop.OWC.ChartChartTypeEnum
            objChart.Type = Microsoft.Office.Interop.Owc11.ChartChartTypeEnum.chChartTypeBarClustered;

            //指定图表是否需要图例
            objChart.HasLegend = true;

            //标题
            objChart.HasTitle = true;
            objChart.Title.Caption = _title;
            objChart.Title.Font.Bold = true;
            objChart.Title.Font.Color = "blue";


            #region 样式设置

            //   //旋转
            objChart.Rotation = 360;//表示指定三维图表的旋转角度
            objChart.Inclination = 10;//表示指定三维图表的视图斜率。有效范围为 -90 到 90

            //背景颜色
            objChart.PlotArea.Interior.Color = "red";

            //底座颜色
            objChart.PlotArea.Floor.Interior.Color = "green";

            objChart.Overlap = 50;//单个类别中标志之间的重叠量

            #endregion

            //x,y轴的图示说明
            objChart.Axes[0].HasTitle = true;
            objChart.Axes[0].Title.Caption = "X : 类别";
            objChart.Axes[1].HasTitle = true;
            objChart.Axes[1].Title.Caption = "Y : 数量";


            //添加一个series
            Microsoft.Office.Interop.Owc11.ChSeries ThisChSeries = objChart.SeriesCollection.Add(0);


            //给定series的名字
            ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimSeriesNames,
                Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), SeriesName);
            //给定分类
            ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimCategories,
                Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strCategory);
            //给定值
            ThisChSeries.SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimValues,
                Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(), strValue);

            Microsoft.Office.Interop.Owc11.ChDataLabels dl = objChart.SeriesCollection[0].DataLabelsCollection.Add();
            dl.HasValue = true;
            //   dl.Position=Microsoft.Office.Interop.Owc11.ChartDataLabelPositionEnum.chLabelPositionOutsideEnd;


            string filename = DateTime.Now.ToString("yyyyMMddHHmmssff") + ".gif";
            string strAbsolutePath = _phaysicalimagepath + "\\" + filename;
            objCSpace.ExportPicture(strAbsolutePath, "GIF", _picwidth, _pichight);//输出成GIF文件.

            return filename;

        }

    }

    #endregion

    #region 下拉框事件

    public void DropDownList_SelectedIndexChanged(object sender, System.EventArgs e)
    {      
        string[] chartCategories = new string[10];
        string[] chartValues = new string[10];

        //Response.Write(sql);
        DataTable ddt=db.ececSelectSql(sql);

        for (int i = 0; i < ddt.Rows.Count; i++)
        {
            chartCategories[i] = ddt.Rows[i][0].ToString();
            chartValues[i] = ddt.Rows[i][1].ToString();
        }

        chartFactory.chartCategoriesArrValue = chartCategories;
        chartFactory.chartValuesArrValue = chartValues;
        chartFactory.chartTitleValue = "统计图表";
        chartFactory.chartTypeValue = _DropDownListtype.SelectedItem.Text;
        Microsoft.Office.Interop.Owc11.ChartSpaceClass oChartSpace = chartFactory.BuildCharts();
        string filename = DateTime.Now.ToString("yyyyMMddHHmmssff") + ".png";
        string path = Server.MapPath(".") + @"\ChartImages\" + filename;  //产生图片并保存,还可以是png gif图片
        if (System.IO.File.Exists(path))
        {
            System.IO.File.Delete(path);
        }
        oChartSpace.ExportPicture(path, "png", 470,330);
        Image1.ImageUrl = @".\ChartImages\" + filename;  // 显示统计图
    }

    #region 下拉框绘制类
    public class ChartFactory
    {
        public ChartFactory()
        {

        }
        public System.Web.UI.WebControls.Image imgHondaLineup;
        public string[] chartCategoriesArr;
        public string[] chartValuesArr;
        public Microsoft.Office.Interop.Owc11.ChartChartTypeEnum chartType = Microsoft.Office.Interop.Owc11.ChartChartTypeEnum.chChartTypeColumn3D;//默认值
        public static string chartTypeCh = "垂直柱状图";
        public static string chartTitle = "";

        public Microsoft.Office.Interop.Owc11.ChartSpaceClass BuildCharts()
        {
            string chartCategoriesStr = String.Join("\t", chartCategoriesArr);
            string chartValuesStr = String.Join("\t", chartValuesArr);

            Microsoft.Office.Interop.Owc11.ChartSpaceClass oChartSpace = new Microsoft.Office.Interop.Owc11.ChartSpaceClass();

            int ii = chartMap.Count;
            chartType = (ChartChartTypeEnum)chartMap[chartTypeCh];

            if (chartType == ChartChartTypeEnum.chChartTypePie ||
                chartType == ChartChartTypeEnum.chChartTypePie3D ||
                chartType == ChartChartTypeEnum.chChartTypeDoughnut)
            {
                oChartSpace.HasChartSpaceLegend = true;
                oChartSpace.ChartSpaceLegend.Position = ChartLegendPositionEnum.chLegendPositionBottom;
            }

            oChartSpace.Border.Color = "blue";
            oChartSpace.Charts.Add(0);
            oChartSpace.Charts[0].HasTitle = true;
            oChartSpace.Charts[0].Type = chartType;
            oChartSpace.Charts[0].ChartDepth = 125;
            oChartSpace.Charts[0].AspectRatio = 80;
            oChartSpace.Charts[0].Title.Caption = chartTitle;
            oChartSpace.Charts[0].Title.Font.Bold = true;

            oChartSpace.Charts[0].SeriesCollection.Add(0);
            oChartSpace.Charts[0].SeriesCollection[0].DataLabelsCollection.Add();

            if (chartType == ChartChartTypeEnum.chChartTypePie ||
                chartType == ChartChartTypeEnum.chChartTypePie3D ||
                chartType == ChartChartTypeEnum.chChartTypeDoughnut)
            {
                //oChartSpace.Charts[0].HasLegend = true;
                oChartSpace.Charts[0].SeriesCollection[0].DataLabelsCollection[0].HasPercentage = true ;
                oChartSpace.Charts[0].SeriesCollection[0].DataLabelsCollection[0].HasValue = false;
            }
            else
            {
                oChartSpace.Charts[0].SeriesCollection[0].DataLabelsCollection[0].HasPercentage = false;
                oChartSpace.Charts[0].SeriesCollection[0].DataLabelsCollection[0].HasValue = true;
            }

            oChartSpace.Charts[0].SeriesCollection[0].Caption = String.Empty;
            oChartSpace.Charts[0].SeriesCollection[0].DataLabelsCollection[0].Font.Name = "verdana";
            oChartSpace.Charts[0].SeriesCollection[0].DataLabelsCollection[0].Font.Size = 10;
            oChartSpace.Charts[0].SeriesCollection[0].DataLabelsCollection[0].Font.Bold = false;
            oChartSpace.Charts[0].SeriesCollection[0].DataLabelsCollection[0].Font.Color = "red";
            oChartSpace.Charts[0].SeriesCollection[0].DataLabelsCollection[0].Position = ChartDataLabelPositionEnum.chLabelPositionCenter;

            if (chartType == ChartChartTypeEnum.chChartTypeBarClustered ||
                chartType == ChartChartTypeEnum.chChartTypeBar3D ||
                chartType == ChartChartTypeEnum.chChartTypeColumnClustered ||
                chartType == ChartChartTypeEnum.chChartTypeColumn3D)
            {
                oChartSpace.Charts[0].SeriesCollection[0].DataLabelsCollection[0].Position = ChartDataLabelPositionEnum.chLabelPositionOutsideEnd;
            }

            oChartSpace.Charts[0].SeriesCollection[0].SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimCategories,
                Convert.ToInt32(Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral), chartCategoriesStr);

            oChartSpace.Charts[0].SeriesCollection[0].SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimValues,
                Convert.ToInt32(Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral), chartValuesStr);

            return oChartSpace;
        }

        #region  属性设置
        public string[] chartCategoriesArrValue
        {
            get
            {
                return chartCategoriesArr;
            }
            set
            {
                chartCategoriesArr = value;
            }
        }

        public string[] chartValuesArrValue
        {
            get
            {
                return chartValuesArr;
            }
            set
            {
                chartValuesArr = value;
            }
        }
        public string chartTypeValue
        {
            get
            {
                return chartTypeCh;
            }
            set
            {
                chartTypeCh = value;
            }
        }
        public string chartTitleValue
        {
            get
            {
                return chartTitle;
            }
            set
            {
                chartTitle = value;
            }
        }
        #endregion
    }
#endregion
    #endregion

    protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {
        TreeView1.SelectedNodeStyle.BackColor = System.Drawing.Color.PaleGoldenrod;
    }
    protected void btnSelect_Click(object sender, EventArgs e)
    {
        DropDownList_SelectedIndexChanged(sender, e);
    }
}

转载:http://blog.youkuaiyun.com/wpuuuu/archive/2007/01/31/1498555.aspx

转载于:https://www.cnblogs.com/Dragon-China/archive/2007/02/05/640318.html

Retrieving the COM class factory for component with CLSID {0002E55D-0000-0000-C000-000000000046} failed due to the following error: 80040154. 收藏 Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.Runtime.InteropServices.COMException: Retrieving the COM class factory for component with CLSID {0002E55D-0000-0000-C000-000000000046} failed due to the following error: 80040154. Source Error: An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. Stack Trace: [COMException (0x80040154): Retrieving the COM class factory for component with CLSID {0002E55D-0000-0000-C000-000000000046} failed due to the following error: 80040154.] GraphPage.Page_Load(Object sender, EventArgs e) +1097 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35 System.Web.UI.Control.OnLoad(EventArgs e) +99 System.Web.UI.Control.LoadRecursive() +50 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627 -------------------------------------------------------------------------------- Version Information: Microsoft .NET Framework Version:2.0.50727.3082; ASP.NET Version:2.0.50727.3082 请大家帮忙 谢谢 Server Error in &#39;/&#39; Application. -------------------------------------------------------------------------------- Retrieving the COM class factory for component with CLSID {0002E55D-0000-0000-C000-000000000046} failed due to the following error: 80040154.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值