作者:未知   由于本文网上多处见到 对于谁是作者 无法肯定

1、下载owc11 COM组件

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

2、注册owc11

在工程中添加 C:/Program Files/Common Files/Microsoft Shared/Web Components/11  文件下的owc11.dll引用  或者按如下图所以添加com

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;i<chartTypes.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;  // 显示统计图
  }

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

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

在asp.net中调用Office来制作各种(3D)统计图相关推荐

  1. 在ASP.NET中使用Office Web Components (OWC)创建统计图

    图形和图表是Web上数据表现的很好的形式,在ASP.NET,可以使用Office Web Components (OWC)来创建统计图.Office Web Component (OWC)是包含在Mi ...

  2. cmd 调用oracle存储过程,asp.net中调用oracle存储过程的方法

    存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果 ...

  3. ASP.NET中调用Excel的问题

    如果需要在ASP.NET的程序里调用Office的组件,例如Excel,代码写起来并不复杂 首先引用Microsoft.Office.Interop.Excel(注意,必须先装PIAs,可以是Offi ...

  4. ASP程序中调用函数Now()显示上午下午的问题

    ASP程序中,调用函数Now(),显示的时间总是形如"2009-07-12 上午 08:12:56 "这样的,总显示"上午"和"下午",解决 ...

  5. 在ASP.NET中调用存储过程方法新解

    摘要 存储过程的调用在B/S系统中用的很多.传统的调用方法不仅速度慢,而且代码会随着存储过程的增多不断膨胀,难以维护.新的方法在一定程度上解决了这些问题. 关键词 ASP.NET:存储过程 在使用.N ...

  6. 在ASP.NET中调用存储过程方法

    两种不同的存储过程调用方法 为了突出新方法的优点,首先介绍一下在.NET中调用存储过程的"官方"方法.另外,本文的所有示例程序均工作于SqlServer数据库上,其它情况类似,以后 ...

  7. asp.net中调用javascript自定义函数的方法(包括引入JavaScript文件)总结

    通常javascript代码可以与HTML标签一起直接放在前端页面中,但如果JS代码多的话一方面不利于维护,另一方面也对搜索引擎不友好,因为页面因此而变得臃肿:所以一般有良好开发习惯的程序员都会把ja ...

  8. ASP.Net中调用CSS

    Css样式在Web网页上应用越来越广泛,用CSS样式表能够美化页面. 有三种用法: 一 控件本身有一个属性 CssClass,支持CSS类,还有一个属性 Style,可以在Style中直接写CSS代码 ...

  9. asp.net中调用存储过程大全

    在 Visual Basic .NET 中使用存储过程 ADO.NET 简介 本文假设您已经了解了 ADO.NET 的基础知识.如果您在工作中从未使用过 ADO.NET 中的 DataAdapter. ...

最新文章

  1. 2018年第一场省赛:黑龙江省智能车邀请赛
  2. python语言的理解-终于明白python语言的特点是什么
  3. Strange Optimization(扩展欧几里得)
  4. Nginx调度器(反向代理)
  5. drools6.5_Drools 6.5.0.Final可用
  6. Spring 3.2的REST异常处理
  7. 导出配置_Lua配置表导出优化
  8. 通过Memcached来实现对Tomcat集群中Session的共享策略
  9. position之属性
  10. oracle游标作为out参数,oracle 存储过程 带游标作为OUT参数输出
  11. java毕业设计大数据在线考试系统在线阅卷系统及大数据统计分析源码+系统+数据库+lw文档+调试运行
  12. ios课堂派怎么提交附件_iOS怎么在课堂派上传文件?
  13. SpringBoot Web项目 解析
  14. 车载无线自组织网络的介质访问控制协议研究
  15. java中的char_java中的char是什么意思?
  16. 2.3 构建C语言入职教程
  17. dig @ip 域名 +subnet=ip返回结果各个参数解释与说明
  18. 有什么好用的配音软件?最好是免费的
  19. RT1052的LPI2C配置
  20. Python爬虫入门学习实战项目(一)

热门文章

  1. Python,OpenCV中的霍夫圆变换——cv2.HoughCircles()
  2. Python+OpenCV检测灯光亮点
  3. ROS系统——部署OpenVINO版Nanodet超轻量目标检测器
  4. 学习《Linux设备模型浅析之设备篇》笔记(二)
  5. 机器学习(16)ROC曲线与AUC指标(癌症分类的模型检测--AUC指标)
  6. ssl 接收到一个超出最大准许长度的记录_我所经历的一次Dubbo服务雪崩,这是一个漫长的故事...
  7. python需要具备什么_入门Python需要掌握哪些技能呢?
  8. Hololens2-OpenXR开发(一)-入门
  9. OpenResty上各种测试用例实操(1)
  10. 在Ubuntu 14.04.3 64bit上安装照片编辑软件Fotoxx 15.10