public static int SubstituirPorRegex(string arquivoOrigem, string arquivoDestino, IEnumerable <SubstituicaoRegex> substituicoes) { UtilitarioArquivo.ClonarArquivo(arquivoOrigem, arquivoDestino); int quantidadeSubstituicoes = 0; using (PresentationDocument presentation = PresentationDocument.Open(arquivoDestino, isEditable: true)) { foreach (SlidePart slidePart in presentation.PresentationPart.SlideParts) { XDocument xDocument = slidePart.GetXDocument(); foreach (SubstituicaoRegex substituicao in substituicoes) { // Replace content IEnumerable <XElement> content = xDocument.Descendants(A.p); quantidadeSubstituicoes += OpenXmlRegex.Replace(content, substituicao.Chave, substituicao.Valor, doReplacement: null); // If you absolutely want to preserve compatibility with PowerPoint 2007, then you will need to strip the xml:space="preserve" attribute throughout. // This is an issue for PowerPoint only, not Word, and for 2007 only. // The side-effect of this is that if a run has space at the beginning or end of it, the space will be stripped upon loading, and content/layout will be affected. xDocument.Descendants().Attributes(XNamespace.Xml + "space").Remove(); slidePart.PutXDocument(); } } } return(quantidadeSubstituicoes); }
public static void Substituir(string arquivoOrigem, string arquivoDestino, IEnumerable <Substituicao> substituicoes) { UtilitarioArquivo.ClonarArquivo(arquivoOrigem, arquivoDestino); using (WordprocessingDocument document = WordprocessingDocument.Open(arquivoDestino, isEditable: true)) { foreach (Substituicao substituicao in substituicoes) { TextReplacer.SearchAndReplace( document, substituicao.Chave, substituicao.Valor, substituicao.MatchCase); } } }
public void ClonarArquivoTeste() { string arquivoOrigem = @".\Recursos\TesteClonarArquivo.txt"; string diretorioDestino = @".\Resultados\ClonarArquivoTeste"; var directoryInfo = new DirectoryInfo(diretorioDestino); if (directoryInfo.Exists) { directoryInfo.Delete(recursive: true); directoryInfo.Create(); } string arquivoDestino = $@"{diretorioDestino}\Teste ClonarArquivoTeste.txt"; UtilitarioArquivo.ClonarArquivo(arquivoOrigem, arquivoDestino); int quantidadeArquivos = directoryInfo.GetFiles().Count(); const int quantidadeArquivosEsperada = 1; Assert.Equal(quantidadeArquivosEsperada, quantidadeArquivos); }
public static int SubstituirPorRegex(string arquivoOrigem, string arquivoDestino, IEnumerable <SubstituicaoRegex> substituicoes) { UtilitarioArquivo.ClonarArquivo(arquivoOrigem, arquivoDestino); int quantidadeSubstituicoes = 0; using (WordprocessingDocument wordDocument = WordprocessingDocument.Open(arquivoDestino, isEditable: true)) { XDocument xDocument = wordDocument.MainDocumentPart.GetXDocument(); IEnumerable <XElement> content = xDocument.Descendants(W.p); foreach (SubstituicaoRegex substituicao in substituicoes) { quantidadeSubstituicoes += OpenXmlRegex.Replace(content, substituicao.Chave, substituicao.Valor, doReplacement: null); } wordDocument.MainDocumentPart.PutXDocument(); } return(quantidadeSubstituicoes); }