首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 使用 OWC 產生圖表

     編輯:關於C語言

最近做一個專案,按客戶需求需要產生一些報表,OWC 是比較合適的元件。

1. 如何安裝 OWC 元件

OWC 是 Office Web Components 縮寫,即 Microsoft Office Web 元件,包含 SpreadSheet、Chart、PivotTable 和 Data Source 元件。

只要裝了 Office 辦公軟體,在 C:\Program Files\MSECache\owc11_12 中會有安裝檔:OWC11.msi (Office 2003)。

2. 安裝完成後,新建專案,加入參考 -> COM -> Microsoft Office Web Components 11.0,在 bin 資料夾中會有 Interop.OWC10.dll。

引用命名空間:using Microsoft.Office.Interop.Owc11;

private void MakeLineChart()
{
    // Y 座標軸
    string[] DataName = { "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日" };
    // 第一條曲線資料
    int[] Data = { 0, 10, 20, 100, 40, 50, 60 };
    // 第二條曲線資料
    int[] Data1 = { 100, 50, 41, 86 };
    // 第三條曲線資料
    int[] Data2 = { 10, 50, 100, 30, 50, 60 };

    string strValue1 = "", strValue = "", strValue2 = "", strCateory = "";

    // 迴圈取得資料並格式化為 OWC10 需要的格式 (加 '\t')
    for (int i = 0; i < DataName.Length; i++) strCateory += DataName[i] + '\t';
    for (int i = 0; i < Data.Length; i++) strValue += Data[i].ToString() + '\t';
    for (int i = 0; i < Data1.Length; i++) strValue1 += Data1[i].ToString() + '\t';
    for (int i = 0; i < Data2.Length; i++) strValue2 += Data2[i].ToString() + '\t';

    OWC10.ChartSpaceClass mySpace = new OWC10.ChartSpaceClass();
    OWC10.ChChart myChart = mySpace.Charts.Add(0);
    myChart.Type = OWC10.ChartChartTypeEnum.chChartTypeColumnClustered;
    myChart.HasLegend = true;
    myChart.HasTitle = true;
    myChart.Title.Caption = "交易曲線圖";
    myChart.Axes[0].HasTitle = true;
    myChart.Axes[0].Title.Caption = "數量";
    myChart.Axes[1].HasTitle = true;
    myChart.Axes[1].Title.Caption = "日期";

    // 添加第一個系列
    myChart.SeriesCollection.Add(0);
    myChart.SeriesCollection[0].SetData(OWC10.ChartDimensionsEnum.chDimSeriesNames, 
        (int)OWC10.ChartSpecialDataSourcesEnum.chDataLiteral, "購買");
    myChart.SeriesCollection[0].SetData(OWC10.ChartDimensionsEnum.chDimCategories, 
        (int)OWC10.ChartSpecialDataSourcesEnum.chDataLiteral, strCateory);
    myChart.SeriesCollection[0].SetData(OWC10.ChartDimensionsEnum.chDimValues, 
        (int)OWC10.ChartSpecialDataSourcesEnum.chDataLiteral, strValue);

    // 添加第二個系列
    myChart.SeriesCollection.Add(1);
    myChart.SeriesCollection[1].SetData(OWC10.ChartDimensionsEnum.chDimSeriesNames, 
        (int)OWC10.ChartSpecialDataSourcesEnum.chDataLiteral, "出售");
    myChart.SeriesCollection[1].SetData(OWC10.ChartDimensionsEnum.chDimCategories, 
        (int)OWC10.ChartSpecialDataSourcesEnum.chDataLiteral, strCateory);
    myChart.SeriesCollection[1].SetData(OWC10.ChartDimensionsEnum.chDimValues, 
        (int)OWC10.ChartSpecialDataSourcesEnum.chDataLiteral, strValue1);

    // 添加第三個系列
    myChart.SeriesCollection.Add(2);
    myChart.SeriesCollection[2].SetData(OWC10.ChartDimensionsEnum.chDimSeriesNames, 
        (int)OWC10.ChartSpecialDataSourcesEnum.chDataLiteral, "總成交");
    myChart.SeriesCollection[2].SetData(OWC10.ChartDimensionsEnum.chDimCategories, 
        (int)OWC10.ChartSpecialDataSourcesEnum.chDataLiteral, strCateory);
    myChart.SeriesCollection[2].SetData(OWC10.ChartDimensionsEnum.chDimValues, 
        (int)OWC10.ChartSpecialDataSourcesEnum.chDataLiteral, strValue2);

    // 輸出成 GIF 檔案
    string strAbsolutePath = (Server.MapPath(".")) + @"\Images\tempChart.gif";
    Response.Write(strAbsolutePath);
    mySpace.ExportPicture(strAbsolutePath, "GIF", 300, 300);
    string strRelativePath = "Images/tempChart.gif";
    Image1.ImageUrl = strRelativePath;
}

圖表類型列舉

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餅圖", "網狀統計圖", "弧線統計圖" };
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved