Microsoft Office Web Components:Office 安裝即有,亦可獨立安裝。資料綁定 ActiveX 控件,輸入資料生成圖片,再載入頁面。封裝良好、開發難度低、效率高,圖表樣式可調(背景、字體、大小),但輸出畫質略顯粗糙。
右鍵專案 → 加入參考 → COM → Microsoft Office Web Components 11.0(Office 2007;2003 名稱略異)。
protected void pieBtn_Click(object sender, EventArgs e)
{
int[] month = {1,2,3};
double[] count = {120, 240, 220};
string strDataName = "", 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] + "\t";
strData += count[i] + "\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.HasValue = true;
mychartSpace.ExportPicture(Server.MapPath(".") + @"\stat.gif", "gif", 700, 400);
this.ig.ImageUrl = "stat.gif?temp=" + new Random().Next(1,100); // 防快取
}
長條圖同理,將 Type 改為 chChartTypeColumn 即可。