• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    asp.net中调用Office来制作3D统计图的实例代码

    1、首先下载owc11 COM组件

    http://www.microsoft.com/downloads/details.aspx?FamilyID=7287252c-402e-4f72-97a5-e0fd290d4b76displaylang=en

    2、注册owc11

      在工程中添加 C:/Program Files/Common Files/Microsoft Shared/Web Components/11  文件下的owc11.dll引用

      3、在工程中添加

      using OWC11;

      4、开始coding  举例如下:

    复制代码 代码如下:

       public class ChartFactory
      {
      public ChartFactory()
      {
      InitTypeMap();
      //
      // TODO: 在此处添加构造函数逻辑
      //
      }
      protected System.Web.UI.WebControls.Image imgHondaLineup;
      private string[] chartCategoriesArr;
      private string[] chartValuesArr;
      private OWC11.ChartChartTypeEnum chartType =  OWC11.ChartChartTypeEnum.chChartTypeColumn3D;//默认值
      private static Hashtable chartMap = new Hashtable();
      private static string chartTypeCh = "垂直柱状图" ;
      private static string chartTitle = "";

      private void InitTypeMap()
      {
      chartMap.Clear();
      OWC11.ChartChartTypeEnum[] chartTypes = new 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;ichartTypes.Length;i++)
      {
      chartMap.Add(chartTypesCh[i],chartTypes[i]);
      }
      }
      public ChartSpaceClass BuildCharts ()
      {
      string chartCategoriesStr = String.Join ("/t", chartCategoriesArr);
      string chartValuesStr = String.Join ("/t", chartValuesArr);

    OWC11.ChartSpaceClass       oChartSpace = new OWC11.ChartSpaceClass ();

      // ------------------------------------------------------------------------
      // Give pie and doughnut charts a legend on the bottom. For the rest of
      // them let the control figure it out on its own.
      // ------------------------------------------------------------------------

      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 you're charting a pie or a variation thereof percentages make a lot
      // more sense than values...
      // ------------------------------------------------------------------------
       if (chartType == ChartChartTypeEnum.chChartTypePie ||
      chartType == ChartChartTypeEnum.chChartTypePie3D ||
      chartType == ChartChartTypeEnum.chChartTypeDoughnut)
      {
      oChartSpace.Charts[0].SeriesCollection[0].DataLabelsCollection[0].HasPercentage = true;
      oChartSpace.Charts[0].SeriesCollection[0].DataLabelsCollection[0].HasValue = false;
      }
      // ------------------------------------------------------------------------
      // Not so for other chart types where values have more meaning than
      // percentages.
      // ------------------------------------------------------------------------
      else
      {
      oChartSpace.Charts[0].SeriesCollection[0].DataLabelsCollection[0].HasPercentage = false;
      oChartSpace.Charts[0].SeriesCollection[0].DataLabelsCollection[0].HasValue = true;
      }
      
      // ------------------------------------------------------------------------
      // Plug your own visual bells and whistles here
      // ------------------------------------------------------------------------
      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 = true;
      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 (OWC11.ChartDimensionsEnum.chDimCategories,
      Convert.ToInt32(OWC11.ChartSpecialDataSourcesEnum.chDataLiteral), chartCategoriesStr);


    oChartSpace.Charts[0].SeriesCollection[0].SetData (OWC11.ChartDimensionsEnum.chDimValues,
      Convert.ToInt32(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
      }

      //调用   首先需要在页面上放置一个Image来显示产生的统计图

      public void ShowChart()
      {

      //初始化赋值
      chartFactory.chartCategoriesArrValue = chartCategories;
      chartFactory.chartValuesArrValue = chartValues;
      chartFactory.chartTitleValue = chartTitle;
      chartFactory.chartTypeValue = chartType;

      OWC11.ChartSpaceClass oChartSpace = chartFactory.BuildCharts();
      string path = Server.MapPath(".") + @"/images/Chart.jpeg";  //产生图片并保存 页可以是png gif图片
      oChartSpace.ExportPicture(path,"jpeg", 745, 500);
      Image1.ImageUrl = path;  // 显示统计图
      }

      // 保存统计图请参照上一篇文章

      //由于每次生成的统计图都会覆盖原来的图片所以有必要的话可以用日期加时间的方式来作为图片的名字,但是这样将会产生很多图片需及时处理,如不需要只需取同名覆盖原来图片即可。

    您可能感兴趣的文章:
    • 详解高效而稳定的企业级.NET Office 组件Spire(.NET组件介绍之二)
    • .NET实现在网页中预览Office文件的3个方法
    • WinForm中如何预览Office文件
    上一篇:ASP.NET中实时图表的实现方法分享
    下一篇:.Net程序防止被注入代码(整站通用)分享
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    asp.net中调用Office来制作3D统计图的实例代码 asp.net,中,调用,Office,来,