2016-12-23 2 views
-3

Открываю документ и копирую его в поток.Использование OpenXML для замены текста в документе

Как я могу заменить текст в документе перед потоком?

//wordTemplate - var with path to my word template 
byte[] result = null; 
byte[] templateBytes = System.IO.File.ReadAllBytes(wordTemplate); 
using (MemoryStream templateStream = new MemoryStream()) 
{ 
    templateStream.Write(templateBytes, 0, (int)templateBytes.Length); 
    using (WordprocessingDocument doc = WordprocessingDocument.Open(templateStream, true)) 
    { 
     MainDocumentPart mainPart = doc.MainDocumentPart; 

     mainPart.Document.Save(); 
     templateStream.Position = 0; 
     using (MemoryStream memoryStream = new MemoryStream()) 
     { 
      templateStream.CopyTo(memoryStream); 
      result = memoryStream.ToArray(); 
     } 
    } 
} 
+0

это полезно? http://stackoverflow.com/questions/18744660/find-and-replace-text-in-xml-file-using-c-sharp – NMathur

+0

цель - документ открытого слова, изменить некоторые строки и отправить для загрузки пользователям – Fullbalanced

+0

Вы можете просто использовать 'Regex' для замены текста. Подайте его 'StreamReader.ReadToEnd()' 'WordprocessingDocument' и voila! Примечание. Вам нужно переписать большую часть этого ... поскольку кажется, что вы не приближаетесь к нему самым простым способом, для начала. – gravity

ответ

0

Вместо вызова File.ReadAllBytes(), почему бы не назвать File.ReadAllLines(string) вместо этого? Он дает вам массив строк, которые вы можете затем искать и заменять в своих сердцах.

+0

Я открываю документ в формате docx и как ReadAllLines может помочь мне заменить строки в документе Word? – Fullbalanced

Смежные вопросы