Как прочитать 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 совместно с вспомогательными библиотеками или абстракциями.
-
-
Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.