Как прочитать docx файл в C#?

Как прочитать docx файл в C#?

Как прочитать docx файл в C#?

Формат .docx является стандартным форматом документов Microsoft Word, основанным на XML. Для его чтения в среде .NET рекомендуется использовать библиотеку Open XML SDK, которая предоставляет высокоуровневый доступ к структуре документов Office Open XML*.

Требования

Перед началом работы необходимо установить пакет DocumentFormat.OpenXml. Это можно сделать с помощью NuGet:

Install-Package DocumentFormat.OpenXml

Или через .NET CLI:

dotnet add package DocumentFormat.OpenXml

Пример: чтение текста из *.docx файла

Ниже приведён пример чтения текста из документа Word:

using System;

using DocumentFormat.OpenXml.Packaging;

using DocumentFormat.OpenXml.Wordprocessing;

using System.Text;



class Program

{

    static void Main(string[] args)

    {

        string filePath = "example.docx";

        string documentText = ReadWordDocument(filePath);

        Console.WriteLine(documentText);

    }



    static string ReadWordDocument(string path)

    {

        StringBuilder textBuilder = new StringBuilder();



        using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(path, false))

        {

            Body body = wordDoc.MainDocumentPart.Document.Body;



            foreach (var paragraph in body.Elements<Paragraph>())

            {

                textBuilder.AppendLine(paragraph.InnerText);

            }

        }



        return textBuilder.ToString();

    }

}

Объяснение кода:

  • WordprocessingDocument.Open(path, false) — открывает документ в режиме только для чтения.
  • MainDocumentPart.Document.Body — доступ к основному содержимому документа.
  • paragraph.InnerText — получение текста каждого абзаца.
  • Работа с таблицами и другими элементами

    Если документ содержит таблицы, изображения или другие элементы, необходимо использовать соответствующие классы из пространства имён DocumentFormat.OpenXml.Wordprocessing.

    Пример чтения текста из таблиц:

    foreach (Table table in body.Elements<Table>())

    {

        foreach (TableRow row in table.Elements<TableRow>())

        {

            foreach (TableCell cell in row.Elements<TableCell>())

            {

                Console.Write(cell.InnerText + "t");

            }

            Console.WriteLine();

        }

    }

    Альтернативные библиотеки

    Для более простого доступа к содержимому *.docx файлов можно использовать сторонние библиотеки, например:

  • DocX (от Xceed): простой и интуитивный API.
  • Spire.Doc for .NET: платная, но мощная библиотека с поддержкой расширенного форматирования и экспорта.
  • Пример с использованием Xceed.Words.NET (DocX):

    using Xceed.Words.NET;



    class Program

    {

        static void Main()

        {

            using (DocX document = DocX.Load("example.docx"))

            {

                Console.WriteLine(document.Text);

            }

        }

    }

    Установка:

    Install-Package Xceed.Words.NET

    Для чтения .docx файлов в C# можно использовать как стандартную библиотеку Open XML SDK*, так и сторонние решения. Выбор зависит от требований к функциональности и удобству работы с форматом документа.

    Если вам нужно работать с большими документами, учитывать форматирование или изменять содержимое, рекомендуется использовать Open XML SDK совместно с вспомогательными библиотеками или абстракциями.

    Источник

    НЕТ КОММЕНТАРИЕВ

    Оставить комментарий