Archivi tag: Office

Open XML: Convertire un dotx in docx

Per convertire un modello di file Word, estensione gile dotx, in un documento docx p sufficiente utilizzare queste poche righe di codice:
using (WordprocessingDocument template = WordprocessingDocument.Open(documentStream,true))
{
    template.ChangeDocumentType(DocumentFormat.OpenXml.WordprocessingDocumentType.Document);
}

Dove documentStream è il vostro MemoryStream al modello dotx

Share

Open XML SDK 2.0 e i documenti Microsft Office

Se avete la necessità di modificare da codice documenti Office e non avete a disposizione il pacchetto Microsoft Office installato sulla macchina finale di utilizzo, allora continuate a leggere per la libreria Open XML SDK 2.0 fa al caso vostro.

Cominciamo il download dell’SDK che potete trovare a questo indirizzo, scaricate il file OpenXMLSDKv2.msi e procedete con la sua installazione nel computer dove svilupperete il vostro applicativo.

Aprite Visual Studio e aggiungete il riferimento alle seguente librerie:

using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;

Il seguente codice aggiunge un Paragrafo al documento Word:

            // Open a WordprocessingDocument for editing using the filepath.
            using (WordprocessingDocument wordprocessingDocument =
                 WordprocessingDocument.Open(filepath, true))
            {
                // Assign a reference to the existing document body.
                Body body = wordprocessingDocument.MainDocumentPart.Document.Body;

                // Add a paragraph with some text.
                Paragraph para = body.AppendChild(new Paragraph());
                Run run = para.AppendChild(new Run());
                run.AppendChild(new Text(txt));
            }

Mentre se volete aggiungere solo del testo all’interno di un Bookmark (segnaposti interni di Word):

using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(filePath, true)) {
Document document = wordDoc.MainDocumentPart.Document;
foreach (BookmarkStart bm in document.Descendants<BookmarkStart>()) {
    if (bm.Name == bn) {
        var parent = bm.Parent;
        Run run = new Run();// bm.NextSibling<Run>();
        Text tx = new Text(text);
        run.Append(tx);
        //Paragraph newParagraph = new Paragraph(run);
        parent.InsertAfter(run, bm);// = run.OuterXml;
    }
  }
}

Link Utili:

Open XML SDK 2.0 Home Page

Utilizzare i Paragrafi

Utilizzare i Runs

Share