asp.net中调用Office来制作3D统计图
点击次数:29 次 发布日期:2008-11-26 14:13:12 作者:源代码网
|
源代码网推荐 1、首先下载owc11 COM组件 源代码网推荐 源代码网推荐 源代码网推荐 2、注册owc11 源代码网推荐 源代码网推荐 在工程中添加 C:Program FilesCommon FilesMicrosoft SharedWeb Components11 文件下的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 (" ", chartCategoriesArr); 源代码网推荐 string chartValuesStr = String.Join (" ", 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(".") + @"imagesChart.jpeg"; //产生图片并保存 页可以是png gif图片 源代码网推荐 oChartSpace.ExportPicture(path,"jpeg", 745, 500); 源代码网推荐 Image1.ImageUrl = path; // 显示统计图 源代码网推荐 } 源代码网推荐 源代码网推荐 源代码网推荐 // 保存统计图请参照上一篇文章 源代码网推荐 源代码网推荐 //由于每次生成的统计图都会覆盖原来的图片所以有必要的话可以用日期加时间的方式来作为图片的名字,但是这样将会产生很多图片需及时处理,如不需要只需取同名覆盖原来图片即可。 源代码网推荐 源代码网推荐 源代码网推荐 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
