C#代碼實(shí)現(xiàn)根據(jù)Excel數(shù)據(jù)創(chuàng)建PowerPoint圖表
創(chuàng)建圖表是提升 PowerPoint 演示文稿表現(xiàn)力的有效方式,它能夠?qū)?fù)雜的數(shù)據(jù)以直觀的形式呈現(xiàn),幫助觀眾快速理解關(guān)鍵信息。通過讀取 Excel 數(shù)據(jù)生成圖表,可以減少手動錄入數(shù)據(jù)的工作量,并提高數(shù)據(jù)的準(zhǔn)確性。如果希望在 PowerPoint 中直接使用 Excel 文件里的圖表,也可以將圖表以圖片形式插入到幻燈片中,從而完整保留原有的樣式和格式。
本文將介紹如何在 C# 中讀取 Excel 數(shù)據(jù),在 PowerPoint 幻燈片中創(chuàng)建圖表,以及如何將 Excel 圖表以圖片形式插入到 PowerPoint 中。
安裝依賴
開始之前,需要在 .NET 項(xiàng)目中添加所需的程序集引用。你可以下載對應(yīng)的 DLL 文件并手動引用,也可以通過 NuGet 安裝相關(guān)組件。
PM> Install-Package Spire.Office
使用 C# 根據(jù) Excel 數(shù)據(jù)創(chuàng)建 PowerPoint 圖表
在 .NET 中,可以先讀取 Excel 工作表中的數(shù)據(jù),再將這些數(shù)據(jù)作為數(shù)據(jù)源,在 PowerPoint 幻燈片中生成圖表。具體步驟如下:
1.創(chuàng)建 Presentation 對象。
2.創(chuàng)建 Workbook 對象,并使用 Workbook.LoadFromFile() 方法加載 Excel 文件。
3.獲取演示文稿中的第一張幻燈片,并使用 ISlide.Shapes.AppendChart() 方法添加圖表。
4.使用 IChart.ChartData.Clear() 方法清除圖表中的默認(rèn)示例數(shù)據(jù)。
5.獲取 Excel 工作簿中的第一個工作表。
6.遍歷工作表中的行和列:
- 讀取單元格數(shù)據(jù)。
- 將讀取的數(shù)據(jù)寫入圖表數(shù)據(jù)源。
7.設(shè)置圖表標(biāo)題。
8.設(shè)置圖表系列標(biāo)簽和分類標(biāo)簽。
9.設(shè)置各數(shù)據(jù)系列的值。
10.設(shè)置分類軸和值軸的數(shù)字格式。
11.設(shè)置圖表樣式。
12.保存 PowerPoint 演示文稿。
完整示例代碼如下:
using Spire.Presentation;
using Spire.Presentation.Charts;
using Spire.Xls;
using System.Drawing;
using FileFormat = Spire.Presentation.FileFormat;
using IChart = Spire.Presentation.Charts.IChart;
namespace PresentationChartExcelData
{
class Program
{
public static void Main(string[] args)
{
// 創(chuàng)建 Presentation 類的實(shí)例
Presentation presentation = new Presentation();
// 設(shè)置幻燈片大小
presentation.SlideSize.Type = SlideSizeType.Screen16x9;
// 創(chuàng)建 Workbook 類的實(shí)例并加載 Excel 文件
Workbook workbook = new Workbook();
workbook.LoadFromFile("Sample.xlsx");
// 獲取工作簿中的第一個工作表
Worksheet sheet = workbook.Worksheets[0];
// 在演示文稿中創(chuàng)建圖表
RectangleF rect = new RectangleF(
50,
100,
presentation.SlideSize.Size.Width - 100,
presentation.SlideSize.Size.Height - 150);
ISlide slide = presentation.Slides[0];
IChart chart = slide.Shapes.AppendChart(ChartType.ColumnClustered, rect);
// 清除圖表中的默認(rèn)示例數(shù)據(jù)
chart.ChartData.Clear(0, 0, 5, 5);
// 遍歷工作表中的所有行
for (int i = 0; i < sheet.AllocatedRange.RowCount; i++)
{
// 遍歷工作表中的所有列
for (int j = 0; j < sheet.AllocatedRange.ColumnCount; j++)
{
// 將 Excel 單元格數(shù)據(jù)寫入圖表數(shù)據(jù)
chart.ChartData[i, j].Value = sheet.AllocatedRange[i + 1, j + 1].Value2;
// 同時復(fù)制數(shù)字格式
chart.ChartData[i, j].NumberFormat = sheet.AllocatedRange[i + 1, j + 1].NumberFormat;
}
}
// 設(shè)置圖表標(biāo)題
chart.ChartTitle.TextProperties.Text = sheet.Name;
chart.ChartTitle.TextProperties.IsCentered = true;
chart.ChartTitle.Height = 25;
chart.HasTitle = true;
// 設(shè)置系列標(biāo)簽和分類標(biāo)簽
chart.Series.SeriesLabel = chart.ChartData["B1", "C1"];
chart.Categories.CategoryLabels = chart.ChartData["A2", "A" + sheet.AllocatedRange.RowCount];
// 設(shè)置系列數(shù)據(jù)
chart.Series[0].Values = chart.ChartData["B2", "B" + sheet.AllocatedRange.RowCount];
chart.Series[1].Values = chart.ChartData["C2", "C" + sheet.AllocatedRange.RowCount];
// 設(shè)置坐標(biāo)軸數(shù)字格式
chart.PrimaryCategoryAxis.NumberFormat = sheet.AllocatedRange["A2"].NumberFormat;
chart.PrimaryValueAxis.NumberFormat = sheet.AllocatedRange["B2"].NumberFormat;
// 設(shè)置圖表樣式
chart.ChartStyle = ChartStyle.Style2;
// 設(shè)置系列重疊和間隙寬度
chart.OverLap = 50;
chart.GapWidth = 200;
// 保存演示文稿
presentation.SaveToFile("output/PresentationChartExcelData.pptx", FileFormat.Pptx2019);
// 釋放資源
presentation.Dispose();
workbook.Dispose();
}
}
}使用 C# 將 Excel 圖表作為圖片插入 PowerPoint
如果希望將 Excel 工作表中的現(xiàn)有圖表插入到 PowerPoint 幻燈片中,并完整保留其原有的樣式和格式,可以先將圖表導(dǎo)出為圖片,再將圖片插入到幻燈片中。
具體步驟如下:
- 創(chuàng)建
Presentation對象。 - 創(chuàng)建
Workbook對象,并使用Workbook.LoadFromFile()方法加載 Excel 文件。 - 使用
Workbook.SaveChartAsImage()方法將工作表中的圖表保存為圖片。 - 使用
Presentation.Images.Append()方法將圖片添加到演示文稿資源中。 - 使用
Presentation.Slides[].AppendEmbedImage()方法將圖片插入到指定幻燈片。 - 使用
Presentation.SaveToFile()方法保存 PowerPoint 演示文稿。
完整示例代碼如下:
using Spire.Presentation;
using Spire.Presentation.Drawing;
using Spire.Xls;
using System.Drawing;
using FileFormat = Spire.Presentation.FileFormat;
namespace PresentationChartExcelChart
{
class Program
{
public static void Main(string[] args)
{
// 創(chuàng)建 Presentation 類的實(shí)例
Presentation presentation = new Presentation();
// 設(shè)置幻燈片大小
presentation.SlideSize.Type = SlideSizeType.Screen16x9;
// 創(chuàng)建 Workbook 類的實(shí)例并加載 Excel 文件
Workbook workbook = new Workbook();
workbook.LoadFromFile("Sample.xlsx");
// 將第一個工作表中的第一個圖表保存為圖片
Image image = workbook.SaveChartAsImage(workbook.Worksheets[0], 0);
// 將圖片添加到演示文稿資源中
IImageData imageData = presentation.Images.Append(image);
// 將圖片插入到第一張幻燈片
RectangleF rect = new RectangleF(
50,
120,
presentation.SlideSize.Size.Width - 100,
presentation.SlideSize.Size.Height - 170);
presentation.Slides[0].Shapes.AppendEmbedImage(
ShapeType.Rectangle,
imageData,
rect);
// 保存演示文稿
presentation.SaveToFile(
"output/PresentationChartExcelChart.pptx",
FileFormat.Pptx2019);
// 釋放資源
presentation.Dispose();
workbook.Dispose();
}
}
}總結(jié)
本文介紹了如何在 C# 中利用 Excel 數(shù)據(jù)生成 PowerPoint 圖表,以及如何將 Excel 圖表作為圖片插入 PowerPoint 演示文稿。第一種方法通過讀取工作表數(shù)據(jù)動態(tài)創(chuàng)建圖表,適用于需要根據(jù)最新數(shù)據(jù)自動生成演示文稿的場景;第二種方法則將 Excel 中已有的圖表導(dǎo)出為圖片并插入幻燈片,能夠完整保留圖表的樣式和格式,適合直接復(fù)用現(xiàn)有圖表。開發(fā)者可根據(jù)實(shí)際需求選擇合適的方式,實(shí)現(xiàn) Excel 數(shù)據(jù)與 PowerPoint 演示文稿之間的高效集成。
到此這篇關(guān)于C#代碼實(shí)現(xiàn)根據(jù)Excel數(shù)據(jù)創(chuàng)建PowerPoint圖表的文章就介紹到這了,更多相關(guān)C#創(chuàng)建PowerPoint圖表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#中Winform獲取文件路徑的方法實(shí)例小結(jié)
這篇文章主要介紹了C#中Winform獲取文件路徑的方法,以實(shí)例形式較為詳細(xì)的總結(jié)了WinForm關(guān)于路徑操作的常用技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-10-10
c#中SAPI使用總結(jié)——SpVoice的使用方法
最近使用C#重做了點(diǎn)名系統(tǒng)(要用到TTS,讓計(jì)算機(jī)點(diǎn)名)使用了SAPI,在這里總結(jié)一下SpVoice的使用方法。2011-10-10
C#編程實(shí)現(xiàn)帶有Aero效果的窗體示例
這篇文章主要介紹了C#編程實(shí)現(xiàn)帶有Aero效果的窗體,涉及C#調(diào)用動態(tài)鏈接庫針對窗體屬性的相關(guān)操作技巧,需要的朋友可以參考下2017-07-07
C#與PHP的md5計(jì)算結(jié)果不同的解決方法
今天在用C#接入我的登錄api發(fā)現(xiàn)了一個問題,登陸的時候無論如何都會出現(xiàn)用戶名和密碼錯誤的問題,后來通過查找排除找的了問題的原因是因?yàn)镃#與PHP的md5計(jì)算結(jié)果不同導(dǎo)致的,下面就來看看如何解決這個問題吧。2016-12-12
基于C#實(shí)現(xiàn)Windows服務(wù)狀態(tài)啟動和停止服務(wù)的方法
這篇文章主要介紹了基于C#實(shí)現(xiàn)Windows服務(wù)狀態(tài)啟動和停止服務(wù)的方法,詳細(xì)講述了實(shí)現(xiàn)這一功能的具體步驟,代碼簡潔易懂,需要的朋友可以參考下2014-09-09
.net C# 實(shí)現(xiàn)任意List的笛卡爾乘積算法代碼
笛卡爾(Descartes)乘積又叫直積。假設(shè)集合A={a,b},集合B={0,1,2},則兩個集合的笛卡爾積為{(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)}。2013-05-05
C#中StringBuilder用法以及和String的區(qū)別分析
當(dāng)我們在初學(xué)使用C#時,常常會不知道該用StringBuilder合適還是用String高效,下面是我在學(xué)習(xí)當(dāng)中對StringBuilder和String的區(qū)別總結(jié),分享給大家。2013-03-03
ASP.NET總結(jié)C#中7種獲取當(dāng)前路徑的方法
本文主要介紹了7種獲取當(dāng)前路徑的方法,并做了代碼演示,分享給大家,感興趣的朋友可以參考一下。2016-03-03

