EXCEL 工具

如何在 C# 中查看 PowerPoint 文件

發佈 2024年4月3日
分享:

介紹

在軟體開發領域,提供豐富且吸引人的用戶體驗需要將多種媒體類型整合到程式中。 由於 Microsoft Office PowerPoint 簡報經常用於傳達資訊,將 PowerPoint 查看器控制項整合到 C# WinForms 程式中是有利的。 本文介紹如何整合此類控制,讓開發人員能夠在其應用程式中新增 PowerPoint 檢視功能並加以改進。 在本文中,我們將在不安裝MS PowerPoint Viewer的情況下創建C# PowerPoint Viewer。

如何在C#中查看PowerPoint文件

  1. 創建 PowerPoint 應用程式實例。

  2. 將互操作參考添加到專案中

  3. 使用實例打開簡報。

  4. 檢查和建立匯出文件的輸出資料夾。

  5. 將建立的幻燈片圖片載入圖片框中。 使用按鈕在幻燈片之間切換。

  6. 關閉簡報並退出應用程式。

了解 PowerPoint 檢視器控制項

PowerPoint 簡報在各個領域中廣泛使用,包括教育和商業。 將 PowerPoint 檢視器控制項整合到 WinForms 應用程式中有許多優點。

  • 流暢整合:透過讓使用者能夠在應用程式中直接查看和互動 PowerPoint 簡報,使用者可以減少在不同程式間切換的時間,並進一步簡化其工作流程。
  • 增強使用者體驗:該程式通過提供一個可辨識的介面來處理PowerPoint幻燈片,提高了使用者體驗和效率。
  • 增強的彈性:對於在 .NET 應用程式中使用 Windows 的開發人員,藉由添加導航控制或引入顯示模式,開發人員可以調整檢視器控制以滿足獨特需求。

新增參考

首先添加對必要程序集的引用:要在您的項目中添加 Microsoft.Office.Interop.PowerPoint 參考,請右鍵單擊 Visual Studio 中的項目,選擇「添加」>「參考」,然後從 COM 標籤中添加它們。

查看器 PowerPoint

Microsoft.Office.Interop.PowerPoint命名空間提供類別和方法用於以程式化方式與 PowerPoint 簡報互動。 確保系統已安裝 PowerPoint。 讓我們剖析並解釋前面的範例中給出的以下代碼:

using Microsoft.Office.Core;
using Microsoft.Office.Interop.PowerPoint;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DataTableWindowsForm
{
    public partial class PowerPointViewer : Form
    {
        private Microsoft.Office.Interop.PowerPoint.Application pptApplication = new Microsoft.Office.Interop.PowerPoint.Application();
        private Presentation pptPresentation;
        private string outputFolder = @"output_images";
        private int slideIndex = 1;
        public PowerPointViewer()
        {
            InitializeComponent();
        }
        private void DisplaySlide()
        {
            if (!Directory.Exists(outputFolder))
                Directory.CreateDirectory(outputFolder);
            // Export the slide as an png file
            string tempHtmlFile = Path.Combine(outputFolder, "temp.png");
            pptPresentation.Slides [slideIndex].Export(tempHtmlFile, "png", 1024, 768);
            // Load the HTML file into the picture box control
            pictureBox1.ImageLocation = tempHtmlFile;
        }
        private void Next_Click(object sender, EventArgs e)
        {
            int currentSlideIndex = slideIndex;
            if (currentSlideIndex < pptPresentation.Slides.Count)
            {
                slideIndex = slideIndex + 1;
                DisplaySlide();
            }
        }
        private void PowerPointViewercs_Load(object sender, EventArgs e)
        {
            // Load PowerPoint Presentation
            string pptFilePath = "demo.pptx"; // Path to your PowerPoint file
            pptPresentation = pptApplication.Presentations.Open(pptFilePath, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse);
        // Load PowerPoint files here
            DisplaySlide();
        }
        private void Previous_Click(object sender, EventArgs e)
        {
            int currentSlideIndex = slideIndex;
            if (currentSlideIndex > 1)
            {
                slideIndex = slideIndex - 1;
                DisplaySlide();
            }
        }
        private void PowerPointViewercs_FormClosing(object sender, FormClosingEventArgs e)
        {
            // Close the PowerPoint presentation and quit the application when the form is closing
            pptPresentation.Close();
            pptApplication.Quit();
        }
    }
}
using Microsoft.Office.Core;
using Microsoft.Office.Interop.PowerPoint;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DataTableWindowsForm
{
    public partial class PowerPointViewer : Form
    {
        private Microsoft.Office.Interop.PowerPoint.Application pptApplication = new Microsoft.Office.Interop.PowerPoint.Application();
        private Presentation pptPresentation;
        private string outputFolder = @"output_images";
        private int slideIndex = 1;
        public PowerPointViewer()
        {
            InitializeComponent();
        }
        private void DisplaySlide()
        {
            if (!Directory.Exists(outputFolder))
                Directory.CreateDirectory(outputFolder);
            // Export the slide as an png file
            string tempHtmlFile = Path.Combine(outputFolder, "temp.png");
            pptPresentation.Slides [slideIndex].Export(tempHtmlFile, "png", 1024, 768);
            // Load the HTML file into the picture box control
            pictureBox1.ImageLocation = tempHtmlFile;
        }
        private void Next_Click(object sender, EventArgs e)
        {
            int currentSlideIndex = slideIndex;
            if (currentSlideIndex < pptPresentation.Slides.Count)
            {
                slideIndex = slideIndex + 1;
                DisplaySlide();
            }
        }
        private void PowerPointViewercs_Load(object sender, EventArgs e)
        {
            // Load PowerPoint Presentation
            string pptFilePath = "demo.pptx"; // Path to your PowerPoint file
            pptPresentation = pptApplication.Presentations.Open(pptFilePath, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse);
        // Load PowerPoint files here
            DisplaySlide();
        }
        private void Previous_Click(object sender, EventArgs e)
        {
            int currentSlideIndex = slideIndex;
            if (currentSlideIndex > 1)
            {
                slideIndex = slideIndex - 1;
                DisplaySlide();
            }
        }
        private void PowerPointViewercs_FormClosing(object sender, FormClosingEventArgs e)
        {
            // Close the PowerPoint presentation and quit the application when the form is closing
            pptPresentation.Close();
            pptApplication.Quit();
        }
    }
}
Imports Microsoft.Office.Core
Imports Microsoft.Office.Interop.PowerPoint
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.IO
Imports System.Linq
Imports System.Text
Imports System.Threading.Tasks
Imports System.Windows.Forms
Namespace DataTableWindowsForm
	Partial Public Class PowerPointViewer
		Inherits Form

		Private pptApplication As New Microsoft.Office.Interop.PowerPoint.Application()
		Private pptPresentation As Presentation
		Private outputFolder As String = "output_images"
		Private slideIndex As Integer = 1
		Public Sub New()
			InitializeComponent()
		End Sub
		Private Sub DisplaySlide()
			If Not Directory.Exists(outputFolder) Then
				Directory.CreateDirectory(outputFolder)
			End If
			' Export the slide as an png file
			Dim tempHtmlFile As String = Path.Combine(outputFolder, "temp.png")
			pptPresentation.Slides (slideIndex).Export(tempHtmlFile, "png", 1024, 768)
			' Load the HTML file into the picture box control
			pictureBox1.ImageLocation = tempHtmlFile
		End Sub
		Private Sub Next_Click(ByVal sender As Object, ByVal e As EventArgs)
			Dim currentSlideIndex As Integer = slideIndex
			If currentSlideIndex < pptPresentation.Slides.Count Then
				slideIndex = slideIndex + 1
				DisplaySlide()
			End If
		End Sub
		Private Sub PowerPointViewercs_Load(ByVal sender As Object, ByVal e As EventArgs)
			' Load PowerPoint Presentation
			Dim pptFilePath As String = "demo.pptx" ' Path to your PowerPoint file
			pptPresentation = pptApplication.Presentations.Open(pptFilePath, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse)
		' Load PowerPoint files here
			DisplaySlide()
		End Sub
		Private Sub Previous_Click(ByVal sender As Object, ByVal e As EventArgs)
			Dim currentSlideIndex As Integer = slideIndex
			If currentSlideIndex > 1 Then
				slideIndex = slideIndex - 1
				DisplaySlide()
			End If
		End Sub
		Private Sub PowerPointViewercs_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs)
			' Close the PowerPoint presentation and quit the application when the form is closing
			pptPresentation.Close()
			pptApplication.Quit()
		End Sub
	End Class
End Namespace
VB   C#

首先,我們匯入所需的命名空間。 檔案操作由 System.IO 處理,System.Windows.Forms 提供 WinForms 功能,而與 PowerPoint 交互的 Microsoft.Office 類包含在 PowerPoint 中。 在 PowerPointViewerApp 命名空間中,我們定義了一個稱為PowerPointViewer的 WinForms 表單類別。 檢視 PPT 應用程式的主要使用者介面將是此表單。

已宣布,對 PowerPoint 應用程式和簡報的引用將會儲存在兩個私有欄位中,pptApplicationpptPresentation。 通過使用 InitializeComponent(), 建構函式設置由設計師定義的表單視覺元件並初始化表單。 當表單加載時,InitializeComponent()函數被呼叫。 PowerPoint 應用程式(pptApplication)在此時已初始化並可進入。

接下來,我們啟動 pptFilePath 指定的 PowerPoint 文件。 使用 pptApplication.Presentations,我們通過提供其路徑來打開 PowerPoint 文件。(pptFilePath)到打開() function. 程序返回一個表示已開啟簡報的演示文稿對象。

要顯示 PowerPoint 簡報的第一張幻燈片,我們使用 DisplaySlide() function. 第一張幻燈片的索引是1。顯示在圖片框控件中的幻燈片是此功能的結果。 我們使用匯出() 將選定的幻燈片匯出為 PNG 檔案的功能。匯出的 PNG 檔案暫時存儲在系統的臨時資料夾中。 使用 ImageLocation()** 方法,我們將匯出的 PNG 檔案載入 PictureBox 控制項。 這些技術負責在幻燈片之間切換。

導航按鈕 btnPrevious_ClickbtnNext_Click 分別帶您到上一張和下一張幻燈片。 使用 pptPresentation,我們可以在 slideIndex 變數中獲取幻燈片的索引。 我們稱之為 DisplaySlide()如果當前幻燈片索引在有效範圍內,從1到幻燈片總數,則分別使用前一張或下一張幻燈片的索引。

當表單關閉時,Close() 函數被調用。 在這裡,我們通過退出 PowerPoint 程序並使用 Quit 終止 PowerPoint 應用,以確保正確地進行資源管理,釋放系統資源。() 方法。

PowerPoint 檔案

如何在 C# 中查看 Powerpoint 文件:圖 1 - PowerPoint 文件 demo.pptx

輸出:PowerPoint 檢視器

如何在C#中查看PowerPoint文件:圖2 - PowerPointViewercs

IronXL

使用流行的 .NET Excel 庫可以更輕鬆地在 C# 中操作 Excel 文件。IronXL. 由於具有廣泛的功能集來讀取、生成和修改 Excel 文件,它是一個適合多種應用的多功能工具。

以下,我將介紹一些IronXL的主要特性:

輕鬆訪問和高速

  • 使用 IronXL,開發人員可以從現有的 Excel 文件中讀取數據,並快速將數據寫入新的或現有的 Excel 文件。 這解決了存取工作簿和工作表屬性的方法,例如儲存格的值、公式和格式設定。

廣泛的 Excel 支援

  • 開發人員可以使用 IronXL 將資料庫和 CSV 文件等其他來源的數據導入到 Excel 試算表中。 同樣,Excel 文件中的數據可以匯出為多種格式,包括 CSV、HTML、XML 和 PDF。

靈活性

  • 使用 IronXL,開發者可以動態添加、修改和刪除 Excel 文件中的工作表。 這允許根據應用程式的需求在資料格式和組織上具有彈性。

精確的修改

  • 由於 IronXL,Excel 試算表中的個別儲存格可以被準確地修改。 開發人員可以通過程式設定儲存格值、公式、樣式、格式和其他功能。

    要了解更多關於文件的資訊,請參考這裡.

安裝 IronXL

在繼續之前,讓我們先安裝IronXL使用 NuGet 套件管理器控制台:

Install-Package IronXL.Excel

在安裝後,您可以在我們的 C# 項目中使用 IronXL。

使用IronXL進行Excel操作

讓我們看看一個假設的情境,我們想使用IronXL從Excel文件中讀取數據。 以下是一個實現此功能的小範例:

using IronXL;
using System;
class Program
{
    static void Main(string [] args)
    {
        // Path to the Excel file
        string excelFilePath = "sample.xlsx";
        // Load the Excel file
        WorkBook workbook = WorkBook.Load(excelFilePath);
        // Access the first worksheet
        WorkSheet worksheet = workbook.WorkSheets [0];
        // Iterate through rows and columns to read data
        foreach (var row in worksheet.Rows)
        {
            foreach (var cell in row)
            {
                Console.Write(cell.Value + "\t");
            }
            Console.WriteLine();
        }
    }
}
using IronXL;
using System;
class Program
{
    static void Main(string [] args)
    {
        // Path to the Excel file
        string excelFilePath = "sample.xlsx";
        // Load the Excel file
        WorkBook workbook = WorkBook.Load(excelFilePath);
        // Access the first worksheet
        WorkSheet worksheet = workbook.WorkSheets [0];
        // Iterate through rows and columns to read data
        foreach (var row in worksheet.Rows)
        {
            foreach (var cell in row)
            {
                Console.Write(cell.Value + "\t");
            }
            Console.WriteLine();
        }
    }
}
Imports Microsoft.VisualBasic
Imports IronXL
Imports System
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Path to the Excel file
		Dim excelFilePath As String = "sample.xlsx"
		' Load the Excel file
		Dim workbook As WorkBook = WorkBook.Load(excelFilePath)
		' Access the first worksheet
		Dim worksheet As WorkSheet = workbook.WorkSheets (0)
		' Iterate through rows and columns to read data
		For Each row In worksheet.Rows
			For Each cell In row
				Console.Write(cell.Value & vbTab)
			Next cell
			Console.WriteLine()
		Next row
	End Sub
End Class
VB   C#

我們首先添加必要的命名空間。 IronXL 命名空間包含由 IronXL 函式庫提供的類別和方法。 給定sample.xlsx檔案的路徑是我們想要讀取的Excel文件。 使用 WorkBook 載入 Excel 文件。 Load 提供的 Workbook 物件()方法表示 Excel 工作簿。 我們可以使用 workbook.WorkSheets 存取工作簿的第一個工作表。[0].** 我們使用堆疊的 for each 迴圈來遍歷工作表的行和列。 我們將每個單元格的值發送到控制台。

如何在 C# 中查看 Powerpoint 文件:圖 3 - IronXL 輸出

要了解有關IronXL代碼範例的更多資訊,請參考這裡.

結論

多個軟體應用需要使用 C# 將 PowerPoint 簡報轉換為圖片。 無論是否使用 Microsoft.Office.Interop.PowerPoint 命名空間,該過程可能會相對快速地完成。 您可以輕鬆地將 PowerPoint 轉換為圖像整合到您的 C# 程式中,這篇文章的代碼範例可以幫助您,在資訊變更和傳遞方面開啟一個全新的可能性世界。

IronXL提供了一種簡單且高效的方法來在 C# 中執行 Excel 操作,而無需在目標系統上安裝 Excel 或依賴 Interop 函式庫。 IronXL 擁有全面的功能集和使用者友好的 API,是開發人員在 C# 應用程式中處理 Excel 數據的實用工具。 它簡化了讀取、寫入和編輯 Excel 文件的任務。 對於與 Excel 相關的開發專案,IronXL 提供了一個穩定的解決方案,可以提高生產力和靈活性,無論您是在處理數據、製作報告,還是自動化試算表任務。

IronXL 提供了一個免費的社群版,僅限於非商業用途。 付費版本從 $749 起,並可透過訂閱或永久授權取得。授權方案. 它們功能更全面,提供更多功能和支援。 IronXL 也提供一个免費試用許可證. 有關授權的完整和最新資訊,請造訪授權頁面. 訪問此頁面網站了解更多關於 Iron Software 產品的資訊。

下一個 >
如何在 C# 中使用模板創建 PowerPoint

準備開始了嗎? 版本: 2024.11 剛剛發布

免費 NuGet 下載 總下載次數: 1,111,773 查看許可證 >