手机
当前位置:查字典教程网 >编程开发 >asp.net教程 >asp.net中调用Office来制作3D统计图的实例代码
asp.net中调用Office来制作3D统计图的实例代码
摘要:1、首先下载owc11COM组件http://www.microsoft.com/downloads/details.aspx?Family...

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引用

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统计图的实例代码】相关文章:

asp.net cookie清除的代码

c# .net 生成图片验证码的代码

asp.net Execl的添加,更新操作实现代码

asp.net web大文件上传带进度条实例代码

asp.net中WebResponse 跨域访问实例代码

asp.net(c#) RSS功能实现代码

asp.net不用设置iis实现url重写

asp.net DiscuzNT登录,退出的代码

asp.net保存远程图片的代码

asp.net下百度的编码和解码

精品推荐
分类导航