C#/VB.NET:如何從 PowerPoint 演示文稿中提取文本

来源:https://www.cnblogs.com/Carina-baby/archive/2023/05/29/17440477.html
-Advertisement-
Play Games

在學習或者日常工作中,有時我們需要把幻燈片的東西整理成文字,而從 PowerPoint 演示文稿中一張一張的整理手動複製粘貼,整個過程會非常費精力且耗時。那麼怎麼樣才能比較輕鬆且快速地提取PowerPoint中的文字呢?今天這篇文章就將為你介紹如何通過編程方式提取PowerPoint中的文字,文章最 ...


在學習或者日常工作中,有時我們需要把幻燈片的東西整理成文字,而從 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

效果圖

—本文完—


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在Winform中動態讀寫app.config文件 https://blog.csdn.net/kingmax54212008/article/details/38987277?spm=1001.2101.3001.6650.7&utm_medium=distribute.pc_relevant.n ...
  • Winform中通過自帶的App.config實現從配置文件中讀取配置 場景 Winform中實現保存配置到文件/項目啟動時從文件中讀取配置(序列化與反序列化對象): Winform中實現保存配置到文件/項目啟動時從文件中讀取配置(序列化與反序列化對象)_winform 讀取配置文件_霸道流氓氣質的 ...
  • # 什麼是線程 Thread - 線程是一個可執行路徑,它可以獨立於其它線程執行。 - 每個線程都在操作系統的進程(Process)內執行,而操作系統進程提供了程式運行的獨立環境。 - 單線程應用,在進程的獨立環境里只跑一個線程,所以該線程擁有獨占權 - 多線程應用,單個進程中會跑多個線程,它們會共 ...
  • 1. 函數(方法)的簡介 函數,在C# 中更多的被稱為方法。它表示一個的類所具有的行為(方法,函數)。 方法的作用 封裝一些公共的代碼,以達到功能重覆利用,減少代碼冗餘。例如,我們經常要進行 輸入,輸出,系統於是幫我們封裝好了 Console.WriteLine(), Console.ReadLin ...
  • 指的是從一種類型,轉換為另外一種類型。例如:“123” 字元串 可以轉換為 整形 123。 類型轉換分為:強制轉換 (顯示轉換)與 隱式轉換 按記憶體分類:裝箱,拆箱 1. 隱式轉換 對於內置數值類型,如果要存儲的值無需截斷或四捨五入即可適應變數,則可以進行隱式轉換。 對於整型類型,這意味著源類型的範 ...
  • 1. 註釋 不寫註釋的程式員都是耍流氓!!名字瞎起是更是土匪!!! 1. 單行文本註釋 static void Main(string[] args) { // 這是單行文本註釋,向控制台輸出一段字元串 Console.WriteLine("Hello World!"); Console.ReadL ...
  • 第一單元 .Net 平臺介紹 學習編程,電腦基本配置(當然配置越高越好): 記憶體 :初期學習8 G,後期可能跟不上, 最好16 G以上 硬碟:500 G,5400 轉速,至少C盤是固態,全是固態最好 顯卡:2 G, 最好是獨顯 解析度:1920 * 1080 CPU 4核以上,i 5 可能已經跟不上 ...
  • # 使用Unity Console視窗的LogEntries私有類實現自定義日誌系統 在Unity開發過程中,我們經常需要使用Console視窗來查看程式運行時的日誌信息。Unity內置的日誌系統提供了基本的日誌功能,但有時我們需要更多的自定義選項。本文將介紹如何使用Unity Console視窗的 ...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...