使用 IronWord 從 DOCX 中提取文本

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronWord 的ExtractText()方法可讓您透過存取整個文件、特定段落或表格單元格從 DOCX 檔案中提取文本,為 C# 中的文件處理和資料分析任務提供了一個簡單的 API。

快速入門:從 DOCX 中提取文字

  1. 安裝 IronWord NuGet 套件: Install-Package IronWord
  2. 建立或載入WordDocumentWordDocument doc = new WordDocument("document.docx");
  3. 擷取所有文字: string text = doc.ExtractText();
  4. 從特定段落擷取文字: string para = doc.Paragraphs[0].ExtractText();
  5. 從表格儲存格中擷取文字: string cell = doc.Tables[0].Rows[0].Cells[0].ExtractText();

Nuget Icon立即開始使用 NuGet 建立 PDF 檔案:

  1. 使用 NuGet 套件管理器安裝 IronWord

    PM > Install-Package IronWord

  2. 複製並運行這段程式碼。

    using IronWord;
    
    // Quick example: Extract all text from DOCX
    WordDocument doc = new WordDocument("sample.docx");
    string allText = doc.ExtractText();
    Console.WriteLine(allText);
  3. 部署到您的生產環境進行測試

    立即開始在您的專案中使用 IronWord,免費試用!
    arrow pointer

從 DOCX 文件中提取文字是文件處理和資料分析的常見需求。 IronWord 提供了一種簡單的方法來讀取和提取現有 DOCX 檔案中的文字內容,可讓您以程式設計方式存取段落、表格和其他文字元素。

本教學詳細介紹了ExtractText()方法,並示範如何從各種文件元素中存取文字。 無論您是在建立文件索引系統、內容管理解決方案還是資料擷取管道,了解如何有效率地從 Word 文件中提取文字都至關重要。

開始使用 IronWord


如何從 DOCX 文件中提取所有文字?

ExtractText()方法從整個 Word 文件中檢索文字內容。 在這個例子中,我們建立一個新文檔,向其中添加文本,使用ExtractText()提取文本,並將其顯示在控制台中。 這展示了主要的文本提取工作流程。

提取的文本保持了文件的邏輯閱讀順序。 此方法按順序處理標題、段落、清單和其他文字元素,使其成為內容分析和搜尋索引應用程式的理想選擇。

:path=/static-assets/word/content-code-examples/how-to/extract-text-simple.cs
using IronWord;

// Instantiate a new DOCX file
WordDocument doc = new WordDocument();

// Add text
doc.AddText("Hello, World!");

// Print extracted text from the document to the console
Console.WriteLine(doc.ExtractText());
$vbLabelText   $csharpLabel

提取出的文字是什麼樣的?

微軟 Word 文件顯示

控制台應該輸出什麼內容?

程式碼範例展示如何使用 Console.WriteLine 列印提取的文本,偵錯控制台會顯示

如何從特定段落中提取文字?

為了更好地控制,您可以從特定段落中提取文本,而不是從整個文件中提取。 透過存取Paragraphs集合,您可以定位並處理所需的任何段落。 這種細粒度的方法在處理具有結構化內容的文件或需要獨立處理特定部分時非常有用。

在這個例子中,我們提取文章首尾兩段的文本,將它們合併,並將結果保存到.txt檔案中。這種技術常用於文件摘要工具,例如擷取文件的引言和結論。 就像您可以使用許可證密鑰解鎖功能一樣, Paragraphs集合讓您可以存取特定的文檔元素。

:path=/static-assets/word/content-code-examples/how-to/extract-text-paragraphs.cs
using IronWord;
using System.IO;

// Load an existing DOCX file
WordDocument doc = new WordDocument("document.docx");

// Extract text and assign variables
string firstParagraph = doc.Paragraphs[0].ExtractText();
string lastParagraph = doc.Paragraphs.Last().ExtractText();

// Combine the texts
string newText = firstParagraph + " " + lastParagraph;

// Export the combined text as a new .txt file
File.WriteAllText("output.txt", newText);
$vbLabelText   $csharpLabel

當提取特定段落的功能與文件分析需求相結合時,將變得非常強大。 例如,您可以根據格式、位置或內容模式提取關鍵段落。 這種選擇性提取方法有助於減少處理時間,並專注於最相關的內容。

第一段提取了哪些內容?

Word文件中,紅色格式化段落顯示在黑色文字段落上方,用於擷取簡報。

最後一段提取了哪些內容?

微軟 Word 文件,顯示格式化段落,其中包含紫色和藍色的 Lorem ipsum 文字。

合併後的文字在輸出檔中如何顯示?

文字編輯器顯示段落擷取點,紅色和藍色箭頭分別標記段落邊界。

以上截圖分別展示了首段提取、末段提取以及合併後的輸出結果(保存到文字檔案中)。請注意,提取過程在保留文字內容的同時,去除了格式訊息,使其適用於純文字處理。

如何從 DOCX 檔案中的表格中提取資料?

表格通常包含需要擷取進行處理或分析的結構化資料。 IronWord 讓您可以透過瀏覽行和儲存格來存取表格資料。 在這個例子中,我們載入一個包含 API 統計資料的文檔,並從第 2 行第 4 列提取一個特定的單元格值。

表格提取對於資料遷移項目、報告產生和自動化資料收集工作流程至關重要。 處理表格資料時,了解從零開始的索引系統至關重要—第一個表是Tables[0] ,第一行是Rows[0] ,依此類推。 這種系統化的方法,類似於許可結構,提供了可預測的存取模式。

:path=/static-assets/word/content-code-examples/how-to/extract-text-table.cs
using IronWord;

// Load the API statistics document
WordDocument apiStatsDoc = new WordDocument("api-statistics.docx");

// Extract text from the 1st table, 4th column and 2nd row
string extractedValue = apiStatsDoc.Tables[0].Rows[2].Cells[3].ExtractText();

// Print extracted value
Console.WriteLine($"Target success rate: {extractedValue}");
$vbLabelText   $csharpLabel

源表是什麼樣的?

以 Word 文件形式呈現的 API 使用統計表,顯示了 6 個端點的請求數、延遲、成功率和頻寬指標。

從表格單元格中檢索到的值是什麼?

Visual Studio 偵錯控制台輸出顯示擷取的表值

進階文字擷取場景

處理複雜文件時,您可能需要結合多種擷取技術。 以下範例示範如何從多個元素中提取文字並以不同的方式處理它們:

using IronWord;
using System.Text;
using System.Linq;

// Load a complex document
WordDocument complexDoc = new WordDocument("report.docx");

// Create a StringBuilder for efficient string concatenation
StringBuilder extractedContent = new StringBuilder();

// Extract and process headers (assuming they're in the first few paragraphs)
var headers = complexDoc.Paragraphs
    .Take(3)
    .Select(p => p.ExtractText())
    .Where(text => !string.IsNullOrWhiteSpace(text));

foreach (var header in headers)
{
    extractedContent.AppendLine($"HEADER: {header}");
}

// Extract table summaries
foreach (var table in complexDoc.Tables)
{
    // Get first cell as table header/identifier
    string tableIdentifier = table.Rows[0].Cells[0].ExtractText();
    extractedContent.AppendLine($"\nTABLE: {tableIdentifier}");

    // Extract key metrics (last row often contains totals)
    if (table.Rows.Count > 1)
    {
        var lastRow = table.Rows.Last();
        var totals = lastRow.Cells.Select(cell => cell.ExtractText());
        extractedContent.AppendLine($"Totals: {string.Join(", ", totals)}");
    }
}

// Save the structured extraction
System.IO.File.WriteAllText("structured-extract.txt", extractedContent.ToString());
using IronWord;
using System.Text;
using System.Linq;

// Load a complex document
WordDocument complexDoc = new WordDocument("report.docx");

// Create a StringBuilder for efficient string concatenation
StringBuilder extractedContent = new StringBuilder();

// Extract and process headers (assuming they're in the first few paragraphs)
var headers = complexDoc.Paragraphs
    .Take(3)
    .Select(p => p.ExtractText())
    .Where(text => !string.IsNullOrWhiteSpace(text));

foreach (var header in headers)
{
    extractedContent.AppendLine($"HEADER: {header}");
}

// Extract table summaries
foreach (var table in complexDoc.Tables)
{
    // Get first cell as table header/identifier
    string tableIdentifier = table.Rows[0].Cells[0].ExtractText();
    extractedContent.AppendLine($"\nTABLE: {tableIdentifier}");

    // Extract key metrics (last row often contains totals)
    if (table.Rows.Count > 1)
    {
        var lastRow = table.Rows.Last();
        var totals = lastRow.Cells.Select(cell => cell.ExtractText());
        extractedContent.AppendLine($"Totals: {string.Join(", ", totals)}");
    }
}

// Save the structured extraction
System.IO.File.WriteAllText("structured-extract.txt", extractedContent.ToString());
$vbLabelText   $csharpLabel

這個進階範例展示瞭如何透過組合不同的文件元素來建立結構化提取。 這種方法適用於產生文件摘要、建立索引或準備資料以進行進一步處理。 就像軟體升級可以增強軟體功能一樣,結合不同的提取方法可以增強文件處理能力。

文字擷取最佳實踐

在生產應用中實現文字擷取時,請考慮以下最佳實務:

1.錯誤處理:始終將提取程式碼包裝在 try-catch 區塊中,以處理可能已損壞或具有意外結構的文件。

2.效能最佳化:對於大型文件或批次處理,考慮只提取必要的部分,而不是提取整個文件內容。

3.字符編碼:保存提取的文本時,請注意字符編碼,特別是對於包含特殊字符或多種語言的文檔。

4.記憶體管理:處理多個文件時,應正確釋放WordDocument對象,以防止記憶體洩漏。

請記住,文字擷取會保留邏輯閱讀順序,但會刪除格式。 如果需要保留格式訊息,請考慮使用IronWord其他功能或單獨儲存元資料。 對於生產環境部署,請查看變更日誌,以了解最新功能和改進。

概括

IronWord 的ExtractText()方法提供了一種強大且靈活的方式,可以從 DOCX 檔案中提取文字。 無論您需要提取整個文件、特定段落還是表格數據,API 都提供了簡單易用的方法來實現您的目標。 透過將這些技術與適當的錯誤處理和最佳化策略相結合,您可以建立強大的文件處理應用程序,高效地處理各種文字擷取場景。

對於更高級的應用程式場景和探索更多功能,請查看擴充功能和其他文件資源,以增強您的文件處理能力。

常見問題解答

如何用 C# 從 Word 文件中提取所有文字?

在 WordDocument 物件上使用 IronWord 的 ExtractText() 方法。只需用 WordDocument doc = new WordDocument("document.docx"); 載入您的 DOCX 檔案,然後調用 string text = doc.ExtractText(); 即可擷取文件中的所有文字內容。

我可以從特定段落而非整個文件中抽取文字嗎?

是的,IronWord 允許您透過存取段落集合,從特定段落中抽取文字。使用 doc.Paragraphs[index].ExtractText() 針對個別段落進行更仔細的文字擷取。

如何從 DOCX 檔案的表格中提取文字?

IronWord 可透過 Tables 集合擷取表格文字。使用 doc.Tables[0].Rows[0].Cells[0].ExtractText() 存取特定的儲存格,從文件中的任何表格儲存格擷取文字內容。

使用 ExtractText() 時,提取的文字會依循什麼順序?

IronWord 的 ExtractText() 方法可維持文件的邏輯閱讀順序,依序處理標題、段落、列表和其他文字元素,非常適合內容分析和搜尋索引。

開始從 DOCX 檔案提取文字的基本步驟是什麼?

首先透過 NuGet 安裝 IronWord (Install-Package IronWord),然後建立或載入一個 WordDocument,最後根據需要使用 ExtractText() 方法擷取整個文件、特定段落或表格單元格中的文字。

文字抽取是否適合建立文件索引系統?

是的,IronWord 的文字擷取功能非常適合建立文件索引系統、內容管理解決方案和資料擷取管道,提供高效率的 Word 文件內容程式化存取。

艾哈邁德·索海爾
全端開發工程師

Ahmad 是一位全端開發人員,精通 C#、Python 和 Web 技術。他對建立可擴展的軟體解決方案有著濃厚的興趣,並樂於探索如何在實際應用中實現設計與功能的完美結合。

在加入 Iron Software 團隊之前,Ahmad 曾從事自動化專案和 API 整合工作,專注於提高效能和開發者體驗。

在空閒時間,他喜歡嘗試 UI/UX 設計理念,為開源工具做出貢獻,偶爾還會涉足技術寫作和文件編寫,使複雜的主題更容易理解。

準備好開始了嗎?
Nuget 下載 29,594 | 版本: 2025.12 剛剛發布