3.836 messaggi dal 28 gennaio 2003
Ciao.
Ho un file docx, con dei segnaposto, ad esempio [c_nome] e vorrei sostituirli con, per esempio, Mario Rossi.

il codice di sotto, preso da https://docs.microsoft.com/en-us/office/open-xml/how-to-search-and-replace-text-in-a-document-part, non funziona e non riesco a capire il motivo e spero nel vostro aiuto.
Dim filepath As String = "C:\tmp\prototipo.docx"
Dim NomeDocumento As String = "C:\tmp\prova.docx"

Using ms As MemoryStream = l.FileToMemoryStream(filepath)
  Using doc As WordprocessingDocument = WordprocessingDocument.Open(ms, True)
    Dim mainPart As MainDocumentPart = doc.MainDocumentPart
    Dim document = mainPart.Document
    Dim docBody As Body = document.Body

    Dim docText As String = ""
    Using sr As New StreamReader(mainPart.GetStream)
      docText = sr.ReadToEnd
    End Using
    'contiene sicuramente il segnaposto [c_nome]
    File.WriteAllText("c:\tmp\prova1.txt", docText)
    
    docText = docText.Replace("[c_nome]", "Mario Rossi")
    'sono sicuro che [c_nome] è sostituito da Mario Rossi
    File.WriteAllText("c:\tmp\prova2.txt", docText)

    Using sw As New StreamWriter(mainPart.GetStream(FileMode.Create))
      sw.Write("docText")
    End Using

    'aggiungo un paragrafo
    docBody.Append(New Paragraph(New Run(New Text("PARAGRAFO AGGIUNTO"))))


    'document.Save()

    doc.Save()
  End Using
  
  '----------------------------------------------------------------
  'salvo il documento in nel file NomeDocumento
  'vedo il paragrafo aggiunto ma non la sostituzione del segnaposto
  '----------------------------------------------------------------
  l.MemoryStreamToFile(ms, NomeDocumento)
End Using


'lo visualizzo
If File.Exists(NomeDocumento) Then AproFileConProgrammaPredefinito(NomeDocumento)



Nel nuovo file riesco a vedere i paragrafi aggiunti, ma non il cambiamento di testo dei paragrafi preesistenti.

Pietro

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.