C# 讀取Word文本框中的文本、圖片和表格(附VB.NET代碼)

【概述】

Word中可插入文本框,在文本框中可添加文本、圖片、表格等內容。本篇文章通過C#程序代碼介紹如何來讀取文本框中的文本、圖片和表格等內容。附VB.NET代碼,有需要可作參考。

【程序環境】

程序中所需必要的程序集文件Spire.Doc.dll,及其他相關dll文件(見下文)。

用於測試的Word源文檔如圖:

 

【程序代碼】

1.讀取文本框中的文本

所需程序集:

【C#】

using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System;
using System.IO;
using System.Text;

namespace ExtractText
{
    class Program
    {
        static void Main(string[] args)
        {
            //加載Word源文檔
            Document doc = new Document();
            doc.LoadFromFile("test.docx");

            //獲取文本框
            TextBox textbox = doc.TextBoxes[0];

            //創建StringBuilder類的對象
            StringBuilder sb = new StringBuilder();

            //遍歷文本框中的對象,獲取文本
            foreach (object obj in textbox.Body.ChildObjects)
            {
                if (obj is Paragraph)
                {
                    String text = ((Paragraph)obj).Text;
                    sb.AppendLine(text);
                }
            }

            //保存寫入的txt文檔到指定路徑
            File.WriteAllText("ExtractedText.txt", sb.ToString());
            System.Diagnostics.Process.Start("ExtractedText.txt");
        }
    }
}

【vb.net】

Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields
Imports System.IO
Imports System.Text

Namespace ExtractText
    Class Program
        Private Shared Sub Main(args As String())
            '加載Word源文檔
            Dim doc As New Document()
            doc.LoadFromFile("test.docx")

            '獲取文本框
            Dim textbox As TextBox = doc.TextBoxes(0)

            '創建StringBuilder類的對象
            Dim sb As New StringBuilder()

            '遍歷文本框中的對象,獲取文本
            For Each obj As Object In textbox.Body.ChildObjects
                If TypeOf obj Is Paragraph Then
                    Dim text As [String] = DirectCast(obj, Paragraph).Text
                    sb.AppendLine(text)
                End If
            Next

            '保存寫入的txt文檔到指定路徑
            File.WriteAllText("ExtractedText.txt", sb.ToString())
            System.Diagnostics.Process.Start("ExtractedText.txt")
        End Sub
    End Class
End Namespace

文本讀取結果:

2.讀取文本框中的圖片

所需程序集:

【C#】

using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System;

namespace ExtractImg
{
    class Program
    {
        static void Main(string[] args)
        {
            //加載Word源文檔
            Document doc = new Document();
            doc.LoadFromFile("test.docx");

            //獲取文本框
            TextBox textbox = doc.TextBoxes[0];    

            int index = 0 ;
            //遍歷文本框中所有段落
            for (int i = 0 ; i < textbox.Body.Paragraphs.Count;i++)
            {
                Paragraph paragraph = textbox.Body.Paragraphs[i];
                //遍歷段落中的所有子對象
                for (int j = 0; j < paragraph.ChildObjects.Count; j++)
                {
                    object obj = paragraph.ChildObjects[j];
                    
                    //判定對象是否為圖片
                    if (obj is DocPicture)
                    {
                        //獲取圖片
                        DocPicture picture = (DocPicture) obj;
                        String imageName = String.Format("Image-{0}.png", index);
                        picture.Image.Save(imageName, System.Drawing.Imaging.ImageFormat.Png);
                        index++;
                    }
                }
            }
                 
        }
    }
}

【vb.net】

Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields

Namespace ExtractImg
    Class Program
        Private Shared Sub Main(args As String())
            '加載Word源文檔
            Dim doc As New Document()
            doc.LoadFromFile("test.docx")

            '獲取文本框
            Dim textbox As TextBox = doc.TextBoxes(0)

            Dim index As Integer = 0
            '遍歷文本框中所有段落
            For i As Integer = 0 To textbox.Body.Paragraphs.Count - 1
                Dim paragraph As Paragraph = textbox.Body.Paragraphs(i)
                '遍歷段落中的所有子對象
                For j As Integer = 0 To paragraph.ChildObjects.Count - 1
                    Dim obj As Object = paragraph.ChildObjects(j)

                    '判定對象是否為圖片
                    If TypeOf obj Is DocPicture Then
                        '獲取圖片
                        Dim picture As DocPicture = DirectCast(obj, DocPicture)
                        Dim imageName As [String] = [String].Format("Image-{0}.png", index)
                        picture.Image.Save(imageName, System.Drawing.Imaging.ImageFormat.Png)
                        index += 1
                    End If
                Next
            Next

        End Sub
    End Class
End Namespace

圖片讀取結果:

3.讀取文本框中的表格

所需程序集:

【C#】

using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.IO;
using System.Text;

namespace ExtractTable
{
    class Program
    {
        static void Main(string[] args)
        {
            //加載Word文檔
            Document doc = new Document();
            doc.LoadFromFile("test.docx");

            //獲取文本框
            TextBox textbox = doc.TextBoxes[0];

            //獲取文本框中表格
            Table table = textbox.Body.Tables[0] as Table;

            StringBuilder sb = new StringBuilder();

            //遍歷表格中的段落並提取文本
            foreach (TableRow row in table.Rows)
            {
                foreach (TableCell cell in row.Cells)
                {
                    foreach (Paragraph paragraph in cell.Paragraphs)
                    {
                        sb.AppendLine(paragraph.Text);
                    }
                }
            }
            File.WriteAllText("ExtractedTable.txt", sb.ToString());
        }
    }
}

【vb.net】

Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields
Imports System.IO
Imports System.Text

Namespace ExtractTable
    Class Program
        Private Shared Sub Main(args As String())
            '加載Word文檔
            Dim doc As New Document()
            doc.LoadFromFile("test.docx")

            '獲取文本框
            Dim textbox As TextBox = doc.TextBoxes(0)

            '獲取文本框中表格
            Dim table As Table = TryCast(textbox.Body.Tables(0), Table)

            Dim sb As New StringBuilder()

            '遍歷表格中的段落並提取文本
            For Each row As TableRow In table.Rows
                For Each cell As TableCell In row.Cells
                    For Each paragraph As Paragraph In cell.Paragraphs
                        sb.AppendLine(paragraph.Text)
                    Next
                Next
            Next
            File.WriteAllText("ExtractedTable.txt", sb.ToString())
        End Sub
    End Class
End Namespace

表格數據讀取結果:

 

【最後】

以上是本文關於通過C#程序讀取Word中的文本框的方法。另推薦閱讀《Java 讀取Word文本框中的文本、圖片和表格

 

(本文完,如需轉載,請務必註明出處!!)