專案需求需產生柱狀圖報表,選用 Office Web Components 11 (OWC11),它是 Office 2003 的圖表元件,支援 3D 圖、柱狀圖、圓餅圖、趨勢圖等。
Microsoft.Office.Interop.Owc11 組件C:\Program Files\Common Files\Microsoft Shared\Web Components\11\owc11.dll// 建立圖表空間
ChartSpace chartSpace = new ChartSpace();
// 新增圖表
ChChart chart = chartSpace.Charts.Add(0);
chart.Type = ChartChartTypeEnum.chChartTypeColumnClustered; // 群組柱狀圖
// 圖例與標題
chart.HasLegend = true;
chart.HasTitle = true;
chart.Title.Caption = "祝朋友們心想事成";
// 座標軸標題
chart.Axes[0].HasTitle = true;
chart.Axes[0].Title.Caption = "X:月份";
chart.Axes[1].HasTitle = true;
chart.Axes[1].Title.Caption = "Y:收入";
// 加入資料系列
chart.SeriesCollection.Add(0);
// 設定數值 (值用 Tab 分隔)
chart.SeriesCollection[0].SetData(
ChartDimensionsEnum.chDimValues,
(int)ChartSpecialDataSourcesEnum.chDataLiteral,
"3000\t4000\t5000\t6000");
// 設定類別標籤
chart.SeriesCollection[0].SetData(
ChartDimensionsEnum.chDimCategories,
(int)ChartSpecialDataSourcesEnum.chDataLiteral,
"3月份\t6月份\t9月份\t12月份");
// 自訂柱狀顏色
string[] colors = { "red", "blue", "yellow", "green" };
for (int i = 0; i < 4; i++) {
chart.SeriesCollection[0].Points[i].Interior.SetSolid(colors[i]);
}
// 顯示數值標籤
ChDataLabels labels = chart.SeriesCollection[0].DataLabelsCollection.Add();
labels.HasValue = true;
// 匯出為 GIF 圖片
string fileName = DateTime.Now.ToString("yyyyMMddHHmmssff") + ".gif";
chartSpace.ExportPicture(@"D:\" + fileName, "GIF", 500, 320);
SetData 方法的第三個參數使用 Tab (\t) 分隔多個資料點Points[i].Interior.SetSolid 可單獨設定每個柱狀的顏色DataLabelsCollection 開啟 HasValue 可在柱狀上方顯示數值ExportPicture 支援 GIF、JPG、PNG 等格式,可指定寬高OWC11 雖然是較舊技術,但在無法使用現代圖表庫的舊系統維護案例中仍具參考價值。