Страницы

Поиск по вопросам

понедельник, 10 февраля 2020 г.

Как понять начертание текста внутри docx файла используя c#?

#c_sharp


Как понять начертание текста на c#?
Мне нужно определить как написан текст:


Курсивом
Жирным
Подчеркнутым
Надчёркнутым
Перечеркнутым


Как собственно распознать начертание на c#, если текст берется из файла word?

StreamReader readLorem = new StreamReader(@"lorem.docx");

StreamWriter writeEncrypt = new StreamWriter(@"encrypt.docx");

StreamWriter writeDecrypt = new StreamWriter(@"decrypt.docx");

public Bacon()
{
    InitializeComponent();
}

private void Bacon_Load(object sender, EventArgs e)
{
    string lorem = readLorem.ReadToEnd();
}


Такой код не сохраняет начертание.   
    


Ответы

Ответ 1



Как ранее отмечали, можно воспользоваться библиотекой OpenXML от Microsoft, которую можно скачать тут. Итак после установки в Ваш проект нужно подключить следующие сборки: DocumentFormat.OpenXml WindowsBase Для работы с текстом нужно подключить пространства имён: using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Wordprocessing; Я создал для демонстрации небольшое консольное приложение для примера, ниже расположена функция, которая разбирает форматирование текста, который содержится в файле по пути path. Эта функция отображает текст из документа и параметры форматирования каждого участка текста: static void ReadDocx(string path) { try { using (var doc = WordprocessingDocument.Open(path, false)) { foreach (var p in doc.MainDocumentPart.Document.Body.Elements()) { foreach (var r in p.Elements()) { Console.WriteLine(r.InnerText); Console.WriteLine("Является:"); if (r.RunProperties.Bold != null) Console.WriteLine("Жирный"); if (r.RunProperties.Italic != null) Console.WriteLine("Курсив"); if (r.RunProperties.Underline != null) Console.WriteLine("Подчёркнутый"); if (r.RunProperties.Strike != null) Console.WriteLine("Перечеркнутый"); if (r.RunProperties.VerticalTextAlignment != null) { if (r.RunProperties.VerticalTextAlignment.Val == VerticalPositionValues.Subscript) Console.WriteLine("Подстрочный"); if (r.RunProperties.VerticalTextAlignment.Val == VerticalPositionValues.Superscript) Console.WriteLine("Надстрочный"); } } } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }

Комментариев нет:

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