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

C# 修改現有 Excel 圖表:載入模板並更新數據與樣式

     編輯:關於C#

本文示範如何透過 C# 開啟包含預設圖表的 Excel 模板檔(Book11.xls),直接操作圖表物件修改系列數值、柱狀形狀(改為圓柱體),並另存新檔(Book2.xls)。此方式適合「固定版面、動態數據」的報表場景。

核心程式碼

Excel.Application app = null;
Excel.Workbook wb = null;
Excel.Chart chart = null;
Excel.ChartGroup chartGroup = null;
Excel.Series series = null;
object missing = Missing.Value;

try
{
    app = new Excel.Application();
    wb = app.Workbooks.Open(@"Z:\Book11.xls", missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);

    // 取得第一個圖表工作表
    chart = (Excel.Chart)app.Charts.get_Item(1);

    // 修改圖表樣式:柱狀改為圓柱體
    chart.BarShape = Excel.XlBarShape.xlCylinder;

    // 取得第一個圖表群組與第一個系列
    chartGroup = (Excel.ChartGroup)chart.ChartGroups(1);
    series = (Excel.Series)chartGroup.SeriesCollection(1);

    // 直接指定新的數值(單一數值將套用至整個系列)
    series.Values = 456;

    app.DisplayAlerts = false;
    wb.SaveAs(@"Z:\Book2.xls", missing, missing, missing, missing, missing, Excel.XlSaveAsAccessMode.xlNoChange, missing, missing, missing, missing);
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}
finally
{
    // 標準釋放流程
    if (wb != null) { wb.Close(false, missing, missing); Marshal.ReleaseComObject(wb); }
    if (app != null) { app.Quit(); Marshal.ReleaseComObject(app); }
    wb = null; app = null; chart = null; chartGroup = null; series = null;
    GC.Collect();
}

關鍵物件層級說明

  • Application.Charts:集合包含所有圖表工作表(非嵌入式圖表)。
  • Chart.ChartGroups:圖表類型群組(如柱狀圖群組、折線圖群組)。
  • ChartGroup.SeriesCollection:該群組下的所有資料系列。
  • Series.Values:設定系列的數值陣列或單一值。
  • Chart.BarShape:xlCylinder(圓柱)、xlCone(圓錐)、xlPyramid(金字塔)、xlBox(長方體)。

適用場景與優缺點

優點缺點
版面固定,美術設計一次完成圖表結構(系列數、類別數)難以動態增減
程式碼簡潔,僅需更新數值需維護模板檔,部署時須同步複製
保留所有複雜格式(漸層、陰影、圖片)跨 Excel 版本相容性需測試

進階應用

  • 若需動態調整類別標籤,可設定 Series.XValues。
  • 搭配 Series.HasDataLabels = true 顯示數值標籤。
  • 若為嵌入式圖表(在工作表上),改用 Worksheet.ChartObjects(index).Chart 取得。

此模板導向開發模式,能有效分離「報表設計」與「資料邏輯」,提升團隊協作效率。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved