Пытаюсь получить весь текст из документа .docx.
using (var wordDocument = WordprocessingDocument.Open(fileName as string, false))
{
//получаем весь текст
var text = wordDocument.MainDocumentPart.Document.Body.InnerText;
Console.WriteLine(rawText);
}
Весь текст действительно получается и записывается в переменную, но, он получается не форматированным и на выходе получаем что-то типа этого:
Хотя в самом word'овском файле:
Я предполагал, что при получении текста он будет хотя бы с учетом перевода строки, но оказалось все не так просто.
Какие есть варианты, чтобы перевод строки сохранялся?
Попробуйте таким способом:
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);
Источник
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости