最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#代碼實(shí)現(xiàn)在PowerPoint中創(chuàng)建組合圖表

 更新時(shí)間:2026年04月24日 11:54:19   作者:2501_93070778  
在 PowerPoint 中,組合圖表是一種將兩種或多種不同圖表類(lèi)型合并到同一圖表中的圖表形式,本文我們就來(lái)看看如何使用C#代碼實(shí)現(xiàn)在PowerPoint中創(chuàng)建組合圖表吧

在 PowerPoint 中,組合圖表是一種將兩種或多種不同圖表類(lèi)型合并到同一圖表中的圖表形式。它可以在一個(gè)圖表中展示多組數(shù)據(jù),使不同變量之間的對(duì)比和分析更加直觀。在本文中,你將學(xué)習(xí)如何通過(guò)編程方式在 PowerPoint 演示文稿中創(chuàng)建組合圖表。

環(huán)境準(zhǔn)備

在開(kāi)始之前,你需要在 .NET 項(xiàng)目中添加相關(guān)組件作為引用。這些組件可以通過(guò)下載安裝包獲取,也可以通過(guò) NuGet 進(jìn)行安裝。

PM> Install-Package Spire.Presentation

在 C# 和 VB.NET 中創(chuàng)建 PowerPoint 組合圖表

在 PowerPoint 中,可以先向幻燈片中添加一種基礎(chǔ)圖表類(lèi)型,然后將其中某個(gè)數(shù)據(jù)系列更改為另一種圖表類(lèi)型,從而實(shí)現(xiàn)組合圖表的效果。下面是將柱形圖與折線圖組合的基本步驟:

  1. 創(chuàng)建一個(gè) Presentation 實(shí)例。
  2. 獲取指定的幻燈片,并向其中添加一個(gè)柱形圖。
  3. 創(chuàng)建一個(gè) DataTable 對(duì)象并填充數(shù)據(jù),然后將數(shù)據(jù)導(dǎo)入到圖表中。
  4. 設(shè)置圖表標(biāo)題、分類(lèi)標(biāo)簽、系列名稱(chēng)以及系列數(shù)據(jù)。
  5. 將第二個(gè)數(shù)據(jù)系列的圖表類(lèi)型修改為帶數(shù)據(jù)標(biāo)記的折線圖。
  6. 將第二個(gè)數(shù)據(jù)系列設(shè)置為使用次坐標(biāo)軸進(jìn)行繪制。
  7. 設(shè)置次坐標(biāo)軸的數(shù)字格式和網(wǎng)格線樣式。
  8. 保存生成的演示文稿。

示例代碼如下:

using Spire.Presentation;
using Spire.Presentation.Charts;
using Spire.Presentation.Drawing;
using System;
using System.Data;
using System.Drawing;

namespace CombinationChart
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創(chuàng)建一個(gè) Presentation 實(shí)例
            Presentation presentation = new Presentation();

            // 在第一張幻燈片中添加一個(gè)簇狀柱形圖
            RectangleF rect = new RectangleF(80, 120, 550, 320);
            IChart chart = presentation.Slides[0].Shapes.AppendChart(ChartType.ColumnClustered, rect);

            // 設(shè)置并格式化圖表標(biāo)題
            chart.ChartTitle.TextProperties.Text = "Monthly Sales Report"; // 月度銷(xiāo)售報(bào)告
            chart.ChartTitle.TextProperties.IsCentered = true;
            chart.ChartTitle.Height = 30;
            chart.HasTitle = true;

            // 創(chuàng)建一個(gè) DataTable 并添加數(shù)據(jù)
            DataTable dataTable = new DataTable();
            dataTable.Columns.Add(new DataColumn("Month", Type.GetType("System.String"))); // 月份
            dataTable.Columns.Add(new DataColumn("Sales", Type.GetType("System.Int32"))); // 銷(xiāo)售額
            dataTable.Columns.Add(new DataColumn("Growth rate", Type.GetType("System.Decimal"))); // 增長(zhǎng)率
            dataTable.Rows.Add("January", 200, 0.6);
            dataTable.Rows.Add("February", 250, 0.8);
            dataTable.Rows.Add("March", 300, 0.6);
            dataTable.Rows.Add("April", 150, 0.2);
            dataTable.Rows.Add("May", 200, 0.5);
            dataTable.Rows.Add("June", 400, 0.9);

            // 將 DataTable 中的數(shù)據(jù)導(dǎo)入到圖表
            for (int c = 0; c < dataTable.Columns.Count; c++)
            {
                chart.ChartData[0, c].Text = dataTable.Columns[c].Caption;
            }
            for (int r = 0; r < dataTable.Rows.Count; r++)
            {
                object[] datas = dataTable.Rows[r].ItemArray;
                for (int c = 0; c < datas.Length; c++)
                {
                    chart.ChartData[r + 1, c].Value = datas[c];
                }
            }

            // 設(shè)置系列標(biāo)簽
            chart.Series.SeriesLabel = chart.ChartData["B1", "C1"];

            // 設(shè)置分類(lèi)標(biāo)簽    
            chart.Categories.CategoryLabels = chart.ChartData["A2", "A7"];

            // 為系列賦值
            chart.Series[0].Values = chart.ChartData["B2", "B7"];
            chart.Series[1].Values = chart.ChartData["C2", "C7"];

            // 將第二個(gè)系列的圖表類(lèi)型改為帶數(shù)據(jù)標(biāo)記的折線圖
            chart.Series[1].Type = ChartType.LineMarkers;

            // 將第二個(gè)系列繪制在次坐標(biāo)軸上
            chart.Series[1].UseSecondAxis = true;

            // 設(shè)置次坐標(biāo)軸的數(shù)字格式
            chart.SecondaryValueAxis.NumberFormat = "0%";

            // 隱藏次坐標(biāo)軸的網(wǎng)格線
            chart.SecondaryValueAxis.MajorGridTextLines.FillType = FillFormatType.None;

            // 設(shè)置圖例位置
            chart.ChartLegend.Position = ChartLegendPositionType.Top;

            // 設(shè)置柱形圖重疊比例
            chart.OverLap = -50;

            // 設(shè)置柱間距
            chart.GapWidth = 200;

            // 保存結(jié)果文檔
            presentation.SaveToFile("CombinationChart.pptx", FileFormat.Pptx2010);
        }
    }
}

方法補(bǔ)充

要使用 C# 在 PowerPoint 中創(chuàng)建組合圖表,目前最高效的方式是借助成熟的第三方庫(kù),它能在幾行代碼內(nèi)完成從創(chuàng)建幻燈片、添加圖表、填入數(shù)據(jù)到設(shè)置系列類(lèi)型的全過(guò)程。

主流方案對(duì)比

在開(kāi)始前,先簡(jiǎn)要了解下不同方案的優(yōu)劣:

方案優(yōu)點(diǎn)缺點(diǎn)適用場(chǎng)景
Spire.PresentationAPI 簡(jiǎn)潔,可直接修改系列圖表類(lèi)型,對(duì)組合圖表支持極好。商業(yè)付費(fèi),免費(fèi)版有限制(如水?。?。需要快速、穩(wěn)定實(shí)現(xiàn)功能,且項(xiàng)目有相應(yīng)預(yù)算。
Aspose.Slides功能強(qiáng)大,接口設(shè)計(jì)良好,同樣能創(chuàng)建組合圖表。商業(yè)付費(fèi),學(xué)習(xí)曲線相對(duì)陡峭。對(duì)文檔處理有廣泛、復(fù)雜需求的企業(yè)級(jí)項(xiàng)目。
Open XML SDK官方免費(fèi),可完全控制底層 XML。復(fù)雜度極高,需要深入理解 Office 文檔結(jié)構(gòu),開(kāi)發(fā)效率低。對(duì)依賴(lài)項(xiàng)有嚴(yán)格限制、預(yù)算為零且愿意投入大量開(kāi)發(fā)時(shí)間的場(chǎng)景。
Microsoft Office Interop直接操作 Office 應(yīng)用程序,適合自動(dòng)化。不推薦用于服務(wù)器端,穩(wěn)定性差,有內(nèi)存泄露風(fēng)險(xiǎn)。僅限有 Office 環(huán)境的客戶(hù)端自動(dòng)化腳本。

綜合來(lái)看,對(duì)于組合圖表這類(lèi)復(fù)雜操作,使用商業(yè)庫(kù)可以顯著提升開(kāi)發(fā)效率和項(xiàng)目穩(wěn)定性。

方法一:使用 Spire.Presentation(推薦方案)

Spire.Presentation 是處理該需求最直觀的庫(kù),核心思路是先創(chuàng)建一個(gè)基礎(chǔ)圖表(如柱狀圖),再修改特定系列的圖表類(lèi)型,生成組合效果。

1. 安裝 NuGet 包:在項(xiàng)目中安裝 Spire.Presentation。

2. 核心代碼示例:以下示例演示了如何創(chuàng)建一份包含“銷(xiāo)售額(柱狀圖)”和“增長(zhǎng)率(折線圖)”的月度銷(xiāo)售報(bào)表組合圖表。

說(shuō)明:為了方便演示,下方合并了關(guān)鍵代碼模塊。實(shí)際使用時(shí),可按需調(diào)整表格數(shù)據(jù)、圖表尺寸和位置。

using Spire.Presentation;
using Spire.Presentation.Charts;
using System.Data;
using System.Drawing;
namespace SpireComboChartDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            // 1. 創(chuàng)建PPT演示文稿實(shí)例[reference:8]
            using (Presentation presentation = new Presentation())
            {
                // 2. 在幻燈片上添加一個(gè)簇狀柱狀圖(基礎(chǔ)圖表)[reference:9]
                RectangleF rect = new RectangleF(80, 120, 550, 320);
                IChart chart = presentation.Slides[0].Shapes.AppendChart(ChartType.ColumnClustered, rect);
                // 3. 設(shè)置圖表標(biāo)題[reference:10]
                chart.ChartTitle.TextProperties.Text = "月度銷(xiāo)售與增長(zhǎng)率分析";
                chart.ChartTitle.TextProperties.IsCentered = true;
                chart.HasTitle = true;
                // 4. 準(zhǔn)備并填充圖表數(shù)據(jù)[reference:11]
                DataTable dataTable = new DataTable();
                dataTable.Columns.Add("月份", typeof(string));
                dataTable.Columns.Add("銷(xiāo)售額(萬(wàn)元)", typeof(int));
                dataTable.Columns.Add("增長(zhǎng)率(%)", typeof(decimal));
                dataTable.Rows.Add("一月", 200, 0.6m);
                dataTable.Rows.Add("二月", 250, 0.8m);
                // ... 此處可繼續(xù)添加三月至六月的示例數(shù)據(jù) ...
                // 將數(shù)據(jù)表內(nèi)容導(dǎo)入到圖表(需自行實(shí)現(xiàn)數(shù)據(jù)導(dǎo)入邏輯,此處為示意)
                // chart.ChartData.ImportFromDataTable(dataTable, true, 1, 0);
                // 5. ?? 關(guān)鍵步驟:將第二個(gè)系列(“增長(zhǎng)率”)的圖表類(lèi)型改為折線圖[reference:12]
                chart.Series[1].Type = ChartType.Line;
                // 6. 將第二個(gè)系列繪制在次坐標(biāo)軸上,便于對(duì)比不同量級(jí)的數(shù)據(jù)[reference:13]
                chart.Series[1].UseSecondAxis = true;
                // 7. 自定義坐標(biāo)軸格式(可選),此處隱藏次坐標(biāo)軸網(wǎng)格線,讓圖表更清爽[reference:14]
                chart.SecondaryValueAxis.MajorGridTextLines.FillType = FillFormatType.None;
                // 8. 保存演示文稿[reference:15]
                presentation.SaveToFile("ComboChartResult.pptx", FileFormat.Pptx2016);
            }
        }
    }
}

代碼解析:關(guān)鍵操作在于第 5 步和第 6 步,通過(guò)修改 Series[1].Type 將數(shù)據(jù)系列的類(lèi)型改為折線圖,并使用 UseSecondAxis 將其關(guān)聯(lián)到次坐標(biāo)軸,從而生成一個(gè)兼具柱狀圖和折線圖優(yōu)勢(shì)的組合視圖。

方法二:使用 Aspose.Slides(備選方案)

Aspose.Slides 是另一款功能強(qiáng)大的專(zhuān)業(yè)庫(kù),同樣支持創(chuàng)建組合圖表。

1. 安裝 NuGet 包:在項(xiàng)目中安裝 Aspose.Slides.NET。

2. 編寫(xiě)代碼:基本思路與 Spire 類(lèi)似,通常也是通過(guò) AddChart 方法添加圖表,然后訪問(wèn) ChartData.Series 集合來(lái)設(shè)置不同系列的圖表類(lèi)型。

// 使用 Aspose.Slides 創(chuàng)建組合圖表示例(代碼結(jié)構(gòu)示意)
using (Presentation pres = new Presentation())
{
    ISlide slide = pres.Slides[0];
    // 添加一個(gè)簇狀柱狀圖作為基礎(chǔ)
    IChart chart = slide.Shapes.AddChart(ChartType.ClusteredColumn, 50, 50, 600, 400);
    // 獲取圖表數(shù)據(jù)工作簿并添加數(shù)據(jù)...
    // 將第二個(gè)系列的類(lèi)型修改為折線圖
    chart.ChartData.Series[1].Type = ChartType.Line;
    // 將第二個(gè)系列繪制在次坐標(biāo)軸上
    chart.ChartData.Series[1].PlotOnSecondAxis = true;
    pres.Save("output.pptx", SaveFormat.Pptx);
}

方案三:Open XML SDK(復(fù)雜,不推薦)

在開(kāi)發(fā)效率方面,Open XML SDK 通常不是首選。它的實(shí)現(xiàn)極其復(fù)雜,你需要手動(dòng)在底層組裝 XML 元素,并確保正確建立圖表部件與關(guān)聯(lián)的內(nèi)嵌 Excel 數(shù)據(jù)源之間的復(fù)雜引用關(guān)系。即使對(duì)于熟練的開(kāi)發(fā)者,這一過(guò)程也容易出錯(cuò)。

如果你仍希望嘗試,官方文檔和 SDK 中的 DocumentReflector 工具是唯一可行的參考方法。

結(jié)語(yǔ)

總的來(lái)說(shuō),組合圖表是一種非常實(shí)用的數(shù)據(jù)可視化方式,能夠在同一圖表中同時(shí)展示不同類(lèi)型的數(shù)據(jù),從而提升信息表達(dá)的清晰度和對(duì)比效果。通過(guò)本文的示例,可以看到,在 PowerPoint 中實(shí)現(xiàn)柱形圖與折線圖的組合并不復(fù)雜:核心思路是先創(chuàng)建基礎(chǔ)圖表,再對(duì)特定數(shù)據(jù)系列調(diào)整圖表類(lèi)型,并結(jié)合次坐標(biāo)軸來(lái)呈現(xiàn)不同量級(jí)的數(shù)據(jù)。

整個(gè)過(guò)程涵蓋了數(shù)據(jù)準(zhǔn)備、圖表配置以及樣式優(yōu)化等關(guān)鍵步驟,不僅可以滿(mǎn)足基礎(chǔ)的數(shù)據(jù)展示需求,還能通過(guò)標(biāo)題、圖例、坐標(biāo)軸等細(xì)節(jié)設(shè)置提升圖表的可讀性和專(zhuān)業(yè)度。掌握這種方法后,你可以根據(jù)實(shí)際業(yè)務(wù)場(chǎng)景靈活擴(kuò)展,構(gòu)建更符合需求的數(shù)據(jù)可視化效果。

到此這篇關(guān)于C#代碼實(shí)現(xiàn)在PowerPoint中創(chuàng)建組合圖表的文章就介紹到這了,更多相關(guān)C# PowerPoint創(chuàng)建組合圖表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • UnityShader使用Plane實(shí)現(xiàn)翻書(shū)效果

    UnityShader使用Plane實(shí)現(xiàn)翻書(shū)效果

    這篇文章主要為大家詳細(xì)介紹了UnityShader使用Plane實(shí)現(xiàn)翻書(shū)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C#編程實(shí)現(xiàn)自定義熱鍵的方法

    C#編程實(shí)現(xiàn)自定義熱鍵的方法

    這篇文章主要介紹了C#編程實(shí)現(xiàn)自定義熱鍵的方法,涉及C#鍵盤(pán)按鍵設(shè)置的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • C#中的Converter的具體應(yīng)用

    C#中的Converter的具體應(yīng)用

    C#中的Converter提供了一種靈活的類(lèi)型轉(zhuǎn)換機(jī)制,本文詳細(xì)介紹了Converter的基本概念、使用場(chǎng)景,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-07-07
  • C#去除字符串中的反斜杠實(shí)例(推薦)

    C#去除字符串中的反斜杠實(shí)例(推薦)

    下面小編就為大家分享一篇C#去除字符串中的反斜杠實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • c#定時(shí)器使用示例詳解

    c#定時(shí)器使用示例詳解

    這篇文章主要介紹了c#定時(shí)器的使用示例,大家參考使用吧
    2014-01-01
  • C#編程自學(xué)之開(kāi)篇介紹

    C#編程自學(xué)之開(kāi)篇介紹

    這篇是一篇關(guān)于C#編程自學(xué)的入門(mén)文章,學(xué)習(xí)C#的開(kāi)始,開(kāi)啟了C#的奇妙之旅,感興趣的小伙伴們可以持續(xù)關(guān)注系列文章。
    2015-10-10
  • C#中的composite模式示例詳解

    C#中的composite模式示例詳解

    Composite組合模式屬于設(shè)計(jì)模式中比較熱門(mén)的一個(gè),相信大家對(duì)它一定不像對(duì)訪問(wèn)者模式那么陌生,這篇文章主要介紹了C#中的composite模式,需要的朋友可以參考下
    2022-06-06
  • C# 對(duì)Outlook2010進(jìn)行二次開(kāi)發(fā)的圖文教程

    C# 對(duì)Outlook2010進(jìn)行二次開(kāi)發(fā)的圖文教程

    下面小編就為大家分享一篇C# 對(duì)Outlook2010進(jìn)行二次開(kāi)發(fā)的圖文教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • c#使用IMap收取163郵件的方法示例

    c#使用IMap收取163郵件的方法示例

    大家都知道,設(shè)置IMAP服務(wù)后,不論是在客戶(hù)端、手機(jī)、iPad還是網(wǎng)頁(yè)中,發(fā)送郵件、閱讀郵件后在各處均可以同步顯示。下面這篇文章主要介紹了c#使用IMap收取163郵件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2018-02-02
  • C#多播委托的實(shí)現(xiàn)示例

    C#多播委托的實(shí)現(xiàn)示例

    C#中的多播委托是一種特殊的委托類(lèi)型,可以持有多個(gè)方法的引用,并在調(diào)用時(shí)依次執(zhí)行這些方法,本文就來(lái)介紹一下C#多播委托的實(shí)現(xiàn)示例,感興趣的可以了解一下
    2025-12-12

最新評(píng)論

阿鲁科尔沁旗| 金溪县| 左云县| 甘德县| 阳山县| 响水县| 达拉特旗| 富平县| 行唐县| 东丰县| 汤原县| 邯郸县| 古丈县| 三门峡市| 通城县| 东丰县| 云浮市| 延庆县| 绵竹市| 凤阳县| 平罗县| 襄城县| 昌吉市| 苍梧县| 灵武市| 黎平县| 多伦县| 海丰县| 盐源县| 互助| 淅川县| 乌恰县| 宝坻区| 延边| 彭水| 锦屏县| 鹤庆县| 西安市| 海淀区| 葵青区| 德庆县|