OWC(Microsoft Office Web Components)是 Microsoft Office 使用的數據綁定 ActiveX 控件,安裝office就有了,其實也可以單獨安裝的(google下載),使用OWC做了一個餅狀圖和柱狀圖,感覺比較簡單,開發難度小,效率比較高,OWC的主要原理是按照所傳入的數據生成相應的圖片,然後開發人員將該圖片加載到相應的位置即可實現效果,個人感覺生成的圖比較粗糙,但是真的封裝的很好,只需按照函數要求輸入數據就OK了,可以設置圖片的背景色,字體,大小等等。
在vs2005/2008裡面開發的時候先要右鍵--》添加引用--》Com-》Microsoft Office Web components 11(這是安裝了office2007,2003好像直接叫Microsoft OWc 什麼的)
餅狀圖:
protected void pieBtn_Click(object sender, EventArgs e)
{
//創建X坐標的值,表示月份
int[] month ={ 1, 2, 3 };
//創建Y坐標的值,表示銷售額
double[] count ={ 120, 240, 220 };
string strDataName = "";
string strData = "";
//創建圖表空間
ChartSpace mychartSpace = new ChartSpace();
mychartSpace.Border.Color = "White";
//在圖表空間內添加一個圖表對象
ChChart mychart = mychartSpace.Charts.Add(0);
//設置每塊餅的數據
for(int i=0;i<count.Length;i++)
{
strDataName += month[i].ToString()+ "\t";
strData += count[i].ToString()+ "\t";
}
//設置圖表類型,本例使用餅
mychart.Type = ChartChartTypeEnum.chChartTypePie;
//設置圖表的一些屬性
//是否需要圖例
mychart.HasLegend = true;
//是否需要主題
mychart.HasTitle = true;
//主題內容
mychart.Title.Caption ="餅狀圖測試";
mychart.Title.Font.Size = 10;
mychart.Title.Font.Bold = false;
mychart.Legend.Position = ChartLegendPositionEnum.chLegendPositionBottom;
mychart.Legend.Interior.Color = "f9f9f9";
mychart.Legend.Font.Size = 9;
mychart.Legend.Border.Color = "White";
//添加圖表塊
mychart.SeriesCollection.Add(0);
//設置圖表塊的屬性
//分類屬性
mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories,
(int)ChartSpecialDataSourcesEnum.chDataLiteral, strDataName);
//值屬性
mychart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimValues,
(int)ChartSpecialDataSourcesEnum.chDataLiteral, strData);
for (int j = 0; j < mychart.SeriesCollection[0].Points.Count; j++)
{
mychart.SeriesCollection[0].Points[j].Border.Color = "White";
}
//顯示百分比
ChDataLabels mytb = mychart.SeriesCollection[0].DataLabelsCollection.Add();
mytb.HasPercentage = true;
//mytb.Border.Color = "White";
mytb.HasValue = true;
//生成圖片
mychartSpace.ExportPicture(Server.MapPath(".") + @"\stat.gif", "gif", 700, 400);
//加載圖片
this.ig.ImageUrl = "stat.gif" + "?temp=" + new Random().Next(1, 100) + ""; ;
}