科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道asp.net中调用Office来制作3D统计图

asp.net中调用Office来制作3D统计图

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

1、首先下载owc11 COM组件 2、注册owc11

作者:中国IT实验室 来源:中国IT实验室 2007年9月5日

关键字: 统计图 Office ASP.NET

  • 评论
  • 分享微博
  • 分享邮件
  1、首先下载owc11 COM组件

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

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

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

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章