我在Winform中用了一下可以,但是到Webform中就不能用,控件不能选择数据源,编辑按钮都是灰色的,怎么回事
我用的是PivotTable 10.0

解决方案 »

  1.   

    发个例子:值给owc的数据用/t分开..网上有很多例子..你也可以搜一下     /// <summary>
        /// 生成图片
        /// </summary>
        /// <param name="sName">图例</param>
        /// <param name="cat">(x)分类</param>
        /// <param name="value">(y)值</param>
        public void BuildPic(ArrayList sName,ArrayList cat,ArrayList value)
        {
            
            Microsoft.Office.Interop.Owc11.ChartSpace objChart = new Microsoft.Office.Interop.Owc11.ChartSpaceClass();
            Microsoft.Office.Interop.Owc11.ChChart obj = objChart.Charts.Add(0);
            obj.Type = Microsoft.Office.Interop.Owc11.ChartChartTypeEnum.chChartTypeLine;
            //obj.Type = Microsoft.Office.Interop.Owc11.ChartChartTypeEnum.chChartTypeSmoothLine;
                    //指定图表是否需要图例        obj.HasLegend = true;        //给定标题
            obj.HasTitle = true;
            obj.Title.Caption = "总报表图表";        //给定x,y轴的图示说明
            obj.Axes[0].HasTitle = true;
            obj.Axes[0].Title.Caption = "时 间";
            obj.Axes[1].HasTitle = true;
            obj.Axes[1].Title.Caption = "Y : 值";
            for (int i = 0; i <cat.Count; i++)
            {          
               
                
                //添加一个series
                obj.SeriesCollection.Add(i);            //给定series的名字            obj.SeriesCollection[i].SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimSeriesNames,
                 +(int)Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral, sName[i].ToString());            //给定分类(x轴)
                obj.SeriesCollection[i].SetData(Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimCategories,
                 +(int)Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral, cat[i].ToString());            //给定值            obj.SeriesCollection[i].SetData
                 (Microsoft.Office.Interop.Owc11.ChartDimensionsEnum.chDimValues,
                 (int)Microsoft.Office.Interop.Owc11.ChartSpecialDataSourcesEnum.chDataLiteral, value[i].ToString());
            }
                    //strCategory = "";
                    //strvalue = "";                //输出成GIF文件.
                    string strAbsolutePath = (Server.MapPath(".")) + "\\" + Session.SessionID + ".gif";
                    objChart.ExportPicture(strAbsolutePath, "GIF", 600, 350);     }
      

  2.   

    有见过OWC.dll
    还真没用过
    学习
      

  3.   

    aspx:
    <script language="javascript" type="text/javascript" src="/js/Calendar30.js"></script>
    选择开始日期和结束日期。如果时间范围超过365则显示年表,如果时间范围超过30则显示月份表,如果超过1则显示日期表,否则显示小时表。<br />
    开始日期:<input id="s" type="text" value="<%= Request.QueryString["s"]%>" onclick="fillDay(this)" >结束日期:<input id="e" value="<%= Request.QueryString["e"]%>" type="text" onclick="fillDay(this)" /><input type="button" value="查看" onclick="location.href='?s='+$F('s')+'&e='+$F('e')" /><br />
    <asp:placeholder id="ChartHolder" runat="server"></asp:placeholder>cs:if (!IsPostBack && Request.QueryString["s"] != null && Request.QueryString["e"] != null)
            {
                string file;            DateTime s = DateTime.Parse(Request.QueryString["s"]);
                DateTime et = DateTime.Parse(Request.QueryString["e"]);            string x = "";
                string y = "";
                string danwei = "时";
                string sql = "";
                int r = ((TimeSpan)(et - s)).Days;
                //Response.Write(r);
                //Response.Write("<br />");
                if (r >= 365)
                {
                    sql = "select datepart(yyyy,regtime) d,count(*) c from t_user where regtime between '{0}' and '{1}' group by datepart(yyyy,regtime) order by d";
                    danwei = "年";
                }
                else if (r >= 30)
                {
                    sql = "select datepart(mm,regtime) d,count(*) c from t_user where regtime between '{0}' and '{1}' group by datepart(mm,regtime) order by d";
                    danwei = "月";
                }
                else if (r >= 1)
                {
                    sql = "select datepart(dd,regtime) d,count(*) c from t_user where regtime between '{0}' and '{1}' group by datepart(dd,regtime) order by d";
                    danwei = "日";
                }
                else
                    sql = "select datepart(HH,regtime) d,count(*) c from t_user where regtime between '{0}' and '{1}' group by datepart(HH,regtime) order by d";            DateTime s1 = new DateTime(s.Year, s.Month, s.Day);
                DateTime e1 = new DateTime(et.Year, et.Month, et.Day, 23, 59, 59);            sql = string.Format(sql, s1.ToString(), e1.ToString());
                //Response.Write(sql);
                //return;            DataSet ds = DAL.dbHelper.ExecuteDataset(sql);            if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
                {
                    x = ds.Tables[0].Rows[0][0].ToString();
                    y = ds.Tables[0].Rows[0][1].ToString();
                    for (int i = 1; i < ds.Tables[0].Rows.Count; i++)
                    {
                        x += '\t' + ds.Tables[0].Rows[i][0].ToString();
                        y += '\t' + ds.Tables[0].Rows[i][1].ToString();
                    }                //创建ChartSpace对象来放置图表
                    ChartSpace objCSpace = new ChartSpaceClass();                //在ChartSpace对象中添加图表,Add方法返回chart对象
                    ChChart objChart = objCSpace.Charts.Add(0);                //指定图表的类型。类型由ChartChartTypeEnum枚举值得到
                    objChart.Type = ChartChartTypeEnum.chChartTypeColumnClustered;                //指定图表是否需要图例
                    objChart.HasLegend = true;                //给定标题
                    objChart.HasTitle = true;
                    objChart.Title.Caption = "注册用户/日期分布图";                //给定x,y轴的图示说明
                    objChart.Axes[0].HasTitle = true;
                    objChart.Axes[0].Title.Caption = "X : 日期/单位: " + danwei;
                    objChart.Axes[1].HasTitle = true;
                    objChart.Axes[1].Title.Caption = "Y : 数量";                //计算数据
                    /*categories 和 values 可以用tab分割的字符串来表示*/
                    //string strSeriesName = "图例 1";                //添加一个series
                    objChart.SeriesCollection.Add(0);                //给定series的名字
                    //objChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimSeriesNames, +(int)ChartSpecialDataSourcesEnum.chDataLiteral, strSeriesName);                //给定分类
                    objChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories,
                    +(int)ChartSpecialDataSourcesEnum.chDataLiteral, x);                //给定值
                    objChart.SeriesCollection[0].SetData
                      (ChartDimensionsEnum.chDimValues,
                      (int)ChartSpecialDataSourcesEnum.chDataLiteral, y);
                    //输出成GIF文件.
                    file = "/tmp/" + Guid.NewGuid().ToString() + ".gif";                objCSpace.ExportPicture(Server.MapPath("~" + file), "GIF", 800, 400);            }
                else
                {
                    file = "/images/0.gif";
                }
                //把图片添加到placeholder.
                string strImageTag = "<IMG SRC='" + file + "'/>";
                ChartHolder.Controls.Add(new LiteralControl(strImageTag));
            }    }