2023年5月7日 星期日

將文件檔案轉換成為文字內容系列 - Office Word

將文件檔案轉換成為文字內容系列 - Office Word

在 上一篇文章 有討論到如何將 HTML 文件檔案轉換成為文字內容,在這份文章中,將會是這個轉換成為文字內容系列文章的第 3 個,在這裡將會探討如何將 Office 這套軟體中的 Word 類型的檔案,抽取出裡面的文字內容出來。

建立可以將 Office Word 檔案轉換出文字內容的測試專案

為了簡化測試用專案的複雜度,因此,在這裡將會建立一個 Console 主控台應用類型的專案。

  • 打開 Visual Studio 2022 IDE 應用程式
  • 從 [Visual Studio 2022] 對話窗中,點選右下方的 [建立新的專案] 按鈕
  • 在 [建立新專案] 對話窗右半部
    • 切換 [所有語言 (L)] 下拉選單控制項為 [C#]
    • 切換 [所有專案類型 (T)] 下拉選單控制項為 [主控台]
  • 在中間的專案範本清單中,找到並且點選 [主控台應用程式] 專案範本選項

    專案,用於建立可在 Windows、Linux 及 macOS 於 .NET 執行的命令列應用程式

  • 點選右下角的 [下一步] 按鈕
  • 在 [設定新的專案] 對話窗
  • 找到 [專案名稱] 欄位,輸入 csWord2Text 作為專案名稱
  • 在剛剛輸入的 [專案名稱] 欄位下方,確認沒有勾選 [將解決方案與專案至於相同目錄中] 這個檢查盒控制項
  • 點選右下角的 [下一步] 按鈕
  • 現在將會看到 [其他資訊] 對話窗
  • 在 [架構] 欄位中,請選擇最新的開發框架,這裡選擇的 [架構] 是 : .NET 7.0 (標準字詞支援)
  • 在這個練習中,需要去勾選 [不要使用最上層陳述式(T)] 這個檢查盒控制項

    這裡的這個操作,可以由讀者自行決定是否要勾選這個檢查盒控制項

  • 請點選右下角的 [建立] 按鈕

稍微等候一下,這個主控台專案將會建立完成

安裝要用到的 NuGet 開發套件

因為開發此專案時會用到這些 NuGet 套件,請依照底下說明,將需要用到的 NuGet 套件安裝起來。

安裝 NPOI 套件

NPOI 是一個針對 C# 開發環境的開源文件處理庫,主要用於操作 Microsoft Office 文件格式,如 Excel(.xls 和 .xlsx)、Word(.doc 和 .docx)等。它提供了一個功能強大且靈活的 API,讓開發者能夠快速並輕鬆地完成對這些文件的讀取、創建和編輯操作。

NPOI 的主要功能和目的包括:

  • 讀取和寫入 Excel 文件:支持讀取和寫入 Excel 文件的內容,包括單元格、行、列、工作表等元素。開發者可以利用 NPOI 對 Excel 文件進行各種操作,如數據導入、導出、報表生成等。
  • 讀取和寫入 Word 文件:支持讀取和寫入 Word 文件的內容,包括文本、段落、列表、表格等元素。開發者可以利用 NPOI 進行 Word 文件的創建、修改和數據提取等操作。
  • 格式控制:提供了對 Office 文件中各種格式的控制,如字體、顏色、對齊、邊框等,讓開發者能夠更好地自定義文件的外觀和樣式。
  • 公式和圖表:支持對 Excel 文件中的公式和圖表的操作,如計算、更新和創建等。
  • 模板操作:可以基於現有的 Office 文件模板進行操作,方便開發者快速生成具有一致格式和樣式的文件。
  • 流操作:支持對流(Stream)進行讀取和寫入操作,使得開發者可以在不需要實際存儲文件的情況下進行 Office 文件的處理。

總之,NPOI 是一個功能強大的 Office 文件處理套件,適用於 C# 開發環境。它可以幫助開發者輕鬆地讀取、創建和編輯各種 Microsoft Office 文件,提高工作效率。

請依照底下說明操作步驟,將這個套件安裝到專案內

  • 滑鼠右擊 [方案總管] 視窗內的 [專案節點] 下方的 [相依性] 節點
  • 從彈出功能表清單中,點選 [管理 NuGet 套件] 這個功能選項清單
  • 此時,將會看到 [NuGet: csWord2Text] 視窗
  • 切換此視窗的標籤頁次到名稱為 [瀏覽] 這個標籤頁次
  • 在左上方找到一個搜尋文字輸入盒,在此輸入 NPOI
  • 稍待一會,將會在下方看到這個套件被搜尋出來
  • 點選 [NPOI] 套件名稱
  • 在視窗右方,將會看到該套件詳細說明的內容,其中,右上方有的 [安裝] 按鈕
  • 點選這個 [安裝] 按鈕,將這個套件安裝到專案內

準備需要抽取文字內容的 PDF 檔案

  • 準備好一個 [.pdf] 文件檔案

  • 在這裡將會從網路上,隨機找到一個 [UserGuide_Android.docx] 檔案

  • 取得該檔案之後,將其透過檔案總管拖拉到 Visual Studio 2022 的專案內

  • 接著,點選 [UserGuide_Android.docx] 檔案

  • 查看 [屬性] 視窗的內容

    若沒有看到屬性視窗出現在 Visual Studio 2022 內,請從 Visual Studio 2022 功能表中,點選 [檢視] > [屬性視窗]

    (這個選項將會在功能表清單內的最下面)

  • 在屬性視窗內,找到 [複製到輸出目錄] 這個選項

  • 從下拉選單中找到並且設定為這個 [有更新時才複製] 選項

開始進行轉檔程式設計

  • 在此專案節點下,找到並且打開 [Program.cs] 這個檔案
  • 使用底下 C# 程式碼替換掉 [Program.cs] 檔案內所有程式碼內容
using NPOI.XWPF.Extractor;
using NPOI.XWPF.UserModel;

namespace csWord2Text
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 讀取 Word 檔案
            XWPFDocument document = new XWPFDocument(File.OpenRead(@"UserGuide_Android.docx"));

            // 讀取所有內容
            XWPFWordExtractor extractor = new XWPFWordExtractor(document);
            string text = extractor.Text;

            // 輸出所有內容
            Console.WriteLine(text);

            // 關閉 C# 檔案
            document.Close();
        }
    }
}

首先使用 [File.OpenRead] 方法來打開指定的 Word 檔案,該方法會回傳 Stream 物件,接著將這個 Stream 物件傳遞到 [XWPFDocument] 建構式內,如此便可以得到 [XWPFDocument] 物件。

接著,再來建立一個 [XWPFWordExtractor] 物件,透過這個物件,便可以抽取出在 Word 文件檔案內的所有文字出來。

最後,將所有的文字內容輸出到螢幕上

底下將會是執行後的螢幕截圖結果

底下是原始的 Word 檔案

 





沒有留言:

張貼留言