OpenXML C# read .docx

298
22 апреля 2017, 21:27

Пытаюсь получить весь текст из документа .docx.

using (var wordDocument = WordprocessingDocument.Open(fileName as string, false))
            {
                //получаем весь текст
                var text = wordDocument.MainDocumentPart.Document.Body.InnerText;                    
                Console.WriteLine(rawText);
            }

Весь текст действительно получается и записывается в переменную, но, он получается не форматированным и на выходе получаем что-то типа этого:

Хотя в самом word'овском файле:

Я предполагал, что при получении текста он будет хотя бы с учетом перевода строки, но оказалось все не так просто.

Какие есть варианты, чтобы перевод строки сохранялся?

Answer 1

Попробуйте таким способом:

public string GetPlainText(OpenXmlElement element) 
{ 
    StringBuilder text = new StringBuilder(); 
    foreach (OpenXmlElement section in element.Elements()) 
    {              
        switch (section.LocalName) 
        { 
            // Text 
            case "t":  
                PlainTextInWord.Append(section.InnerText); 
                break; 
            case "cr":                          // Carriage return 
            case "br":                          // Page break 
                PlainTextInWord.Append(Environment.NewLine); 
                break; 
                // Tab 
            case "tab": 
                PlainTextInWord.Append("\t"); 
                break; 
            // Paragraph 
            case "p": 
                PlainTextInWord.Append(GetPlainText(section)); 
                PlainTextInWord.AppendLine(Environment.NewLine); 
                break; 
            default: 
                PlainTextInWord.Append(GetPlainText(section)); 
                break; 
        } 
    } 
    return text.ToString();
}
var text = GetPlainText(wordDocument.MainDocumentPart.Document.Body);                    
Console.WriteLine(text);

Источник

READ ALSO
Совместимость программ под Windows c Linux и Mac

Совместимость программ под Windows c Linux и Mac

Пишу программу на Windows Forms C# в которой используются хуки APIНа винде все работает конечно, но интересует вопрос о совместимости с другими ОС, будет...

253
Как в C# (WPF) выполнить метод спустя некоторое время после события?

Как в C# (WPF) выполнить метод спустя некоторое время после события?

В моем проекте на WPF, есть кнопка, на LeftMouseDown срабатывает событие, в котором спустя 3 секунды пока кнопка мыши зажата, выполнится метод (отправим...

372
Пример приложения WPF+MVVM+EF6

Пример приложения WPF+MVVM+EF6

ЗдравствуйтеНе могли бы вы мне показать небольшой пример кода приложения, сделанного на WPF (C#) согласно паттерну MVVM и следующим условиям:

236
Как скрыть выводимый столбец в таблице? - PHP

Как скрыть выводимый столбец в таблице? - PHP

Я подключаюсь к MySQL базе данных, получаю из нее данныеВ первом столбце (Data) таблицы Data у меня должен быть файл, в котором будет много значений

333