using (WordprocessingDocument wordDoc =
WordprocessingDocument.Open(document, true))
{
string docText = null;
using (StreamReader sr =
new StreamReader(wordDoc.MainDocumentPart.GetStream()))
{
docText = sr.ReadToEnd();
}
Regex regexText = new Regex("@@[email protected]@");
docText = regexText.Replace(docText, "john thomas ");
using (StreamWriter sw =
new StreamWriter(wordDoc.MainDocumentPart.GetStream(FileMode.Create)))
{
sw.Write(docText);
}
}
Это должно заменить спички на doctext на имя в коде. Я проверил doctext, и слово для замены (@@[email protected]@
) разделено. Существует иногда содержимое XML между @@
и [email protected]@
. Иногда само слово порокло.Замена содержимого Docx
Как заменить @@[email protected]@
?
Почему вы не используете функции слияния слов, чтобы предоставлять поля с содержимым вместо неправильного использования регулярного выражения? –
Не являясь экспертом по формату файлов DOCX, я действительно сомневаюсь, что вы можете работать со строковыми функциями в содержимом файла DOCX. Я предлагаю использовать Aspose.Words или [Spire] (http://www.e-iceblue.com/Introduce/word-for-net-introduce.html). –