C#/VB.NET:如何從 PowerPoint 簡報中提取文字

2023-05-29 18:02:12

在學習或者日常工作中,有時我們需要把幻燈片的東西整理成文字,而從 PowerPoint 簡報中一張一張的整理手動複製貼上,整個過程會非常費精力且耗時。那麼怎麼樣才能比較輕鬆且快速地提取PowerPoint中的文字呢?今天這篇文章就將為你介紹如何通過程式設計方式提取PowerPoint中的文字,文章最後附有C#/VB.NET程式碼以及效果圖,希望對你有所幫助。

程式環境

本次測試時,在程式中引入Free Spire.Presentation for .NET。可通過以下方法參照 Free Spire.Presentation.dll檔案:

方法1:將 Free Spire.Presentation for .NET下載到本地,解壓,安裝。安裝完成後,找到安裝路徑下BIN資料夾中的 Spire.Presentation.dll。然後在Visual Studio中開啟「解決方案資源管理器」,滑鼠右鍵點選「參照」,「新增參照」,將本地路徑BIN資料夾下的dll檔案新增參照至程式。

方法2:通過NuGet安裝。可通過以下2種方法安裝:

(1)可以在Visual Studio中開啟「解決方案資源管理器」,滑鼠右鍵點選「參照」,「管理NuGet包」,然後搜尋「Free Spire.Presentation」,點選「安裝」。等待程式安裝完成。

(2)將以下內容複製到PM控制檯安裝。

Install-Package FreeSpire.Presentation -Version 7.8.0

從 PowerPoint 簡報中提取文字

為了便於在 PowerPoint 檔案中共用或傳遞文字資訊,有時需要進行文字提取操作。以下是從所有簡報幻燈片中提取文字並儲存在 TXT 檔案中的步驟。

  • 初始化 Presentation 類的範例。
  • 使用 Presentation.LoadFromFile() 方法載入 PowerPoint 檔案範例。
  • 建立 StringBuilder 範例。
  • 遍歷檔案中的每張幻燈片,然後遍歷每張幻燈片中的所有形狀。
  • 確定形狀是否為 IAutoShape 型別。如果是,則遍歷每個形狀中的所有段落,並使用 TextParagraph.Text 屬性獲取段落文字。
  • 使用 StringBuilder.AppendLine() 方法將提取的文字附加到StringBuilder範例
  • 建立一個新的txt檔案,並使用 File.WriteAllText() 方法將提取的文字寫入該檔案。

完整程式碼

C#

using Spire.Presentation;
using Spire.Presentation.Charts;
using Spire.Presentation.Converter.Equation.Word;
using System;
using System.IO;
using System.Text;
namespace ExtractText
{
    class Program
    {
        static void Main(string[] args)
        {
            //初始化Presentation類的範例
            Presentation presentation = new Presentation();

            //載PowerPoint檔案範例
            presentation.LoadFromFile("海市蜃樓是如何形成的?.pptx");
            //建立StringBuilder範例
            StringBuilder sb = new StringBuilder();

            //遍歷檔案中的每張幻燈片
            foreach (ISlide slide in presentation.Slides)
            {
                //遍歷每張幻燈片中的每個形狀
                foreach (IShape shape in slide.Shapes)
                {
                    //檢查形狀是否為IAutoShape型別
                    if (shape is IAutoShape)
                    {
                        //以每種形狀遍歷所有段落
                        foreach (TextParagraph tp in (shape as IAutoShape).TextFrame.Paragraphs)
                        {
                            //提取文字並儲存到StringBuilder範例
                            sb.AppendLine(tp.Text);
                        }
                    }
                }
            }
            //建立一個新的txt檔案以儲存提取的文字
            File.WriteAllText("提取文字.txt", sb.ToString());
            presentation.Dispose();
        }
    }
}

VB.NET

Imports Spire.Presentation
Imports Spire.Presentation.Charts
Imports Spire.Presentation.Converter.Equation.Word
Imports System.IO
Imports System.Text

Namespace ExtractText
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            '初始化Presentation類的範例
            Dim presentation As Presentation = New Presentation()

            '載PowerPoint檔案範例
            presentation.LoadFromFile("海市蜃樓是如何形成的?.pptx")
            '建立StringBuilder範例
            Dim sb As StringBuilder = New StringBuilder()

            '遍歷檔案中的每張幻燈片
            For Each slide As ISlide In presentation.Slides
                '遍歷每張幻燈片中的每個形狀
                For Each shape As IShape In slide.Shapes
                    '檢查形狀是否為IAutoShape型別
                    If TypeOf shape Is IAutoShape Then
                        '以每種形狀遍歷所有段落
                        For Each tp As TextParagraph In TryCast(shape, IAutoShape).TextFrame.Paragraphs
                            '提取文字並儲存到StringBuilder範例
                            sb.AppendLine(tp.Text)
                        Next
                    End If
                Next
            Next
            '建立一個新的txt檔案以儲存提取的文字
            Call File.WriteAllText("提取文字.txt", sb.ToString())
            presentation.Dispose()
        End Sub
    End Class
End Namespace

效果圖

—本文完—