Boa tarde galera,
Estou fazendo um programa para substituir um texto especifico em arquivo Word que recebo como um
byte array, porém quando escrevo de volta o stream alterado ele gera um arquivo corrompido.
Alguém já teve esse tipo de problema ?
- Codigo que estou executando
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Validation;
using DocumentFormat.OpenXml.Wordprocessing;
using DocumentFormat.OpenXml;
using System.IO;
using System.Text.RegularExpressions;
namespace Console_Geracao_WORD
{
class Program
{
static void Main(string[] args)
{
SearchAndReplace(@"D:\Teste_bookmark - Cópia.docx");
SearchAndReplace();
}
public static void SearchAndReplace()
{
byte[] templateContent = File.ReadAllBytes("D:\\Teste_bookmark.docx");
MemoryStream mem = new MemoryStream();
mem.Write(templateContent, 0, templateContent.Length);
using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(mem, true))
{
string docText = null;
using (StreamReader sr = new StreamReader(wordDoc.MainDocumentPart.GetStream()))
{
docText = sr.ReadToEnd();
}
Regex regexText = new Regex("Numerocoap");
docText = regexText.Replace(docText, "Hi Everyone!");
wordDoc.MainDocumentPart.Document.Save();
using (StreamWriter sw = new StreamWriter(wordDoc.MainDocumentPart.GetStream(FileMode.Create)))
{
sw.Write(docText);
}
SaveFileStream("D:\\teste_outro_metodo_3.docx", wordDoc.MainDocumentPart.GetStream());
}
}
private static void SaveFileStream(String path, Stream stream)
{
var fileStream = new FileStream(path, FileMode.Create, FileAccess.Write);
stream.CopyTo(fileStream);
fileStream.Dispose();
}
}
}