mercoledì 5 luglio 2017

WPF utilizzare Microsoft Word tramite VB.Net e C#

Si riporta l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/art_utilizzare-microsoft-word-in-wpf-tramite_1504.aspx

In questo articolo vedremo come realizzare una semplice applicazione Word per Windows, utilizzando l’ambiente di sviluppo Visual Studio 2015 in ambito di Windows Presentation Foundation, il tutto con il linguaggio di programmazione Visual Basic Net e C#.

Creazione del progetto

Apriamo VS 2015, e dopo aver selezionato il linguaggio di nostro interesse selezioniamo applicazione di tipo WPF in Desktop applicazioni.
Inseriamo nella nostra form, due pulsanti, uno ci permetterà di scrivere del testo in un nuovo documento word, mentre l’altro di aprire l’ultimo file salvato e rilevare il testo contenuto.
La form dev’essere simile a quella mostrato in figura 1.


figura 1 - i pulsanti sulla form

Stesura del codice

Nell’evento click del pulsante con la dicitura “Nuovo” andremo ad istanziare un oggetto di tipo word application, con il quale, si creano a loro volto un oggetto di tipo word document per aggiungere un documento e poi scrivere del testo.
Qui di seguito tali dichiarazione in entrambi i linguaggi.



VB.Net

Private Sub BtnNuovo_Click(sender As Object, e As RoutedEventArgs)

        Dim WordApp = Type.GetTypeFromProgID("Word.Application")

        'Oggetto di istanza Word

        Dim objectWord = Activator.CreateInstance(WordApp)

        objectWord.Visible = True

        'creo un nuovo docmento

        Dim objectDoc = objectWord.documents.add()

        'Imposto il testo

        objectWord.Selection.TypeText("Prova di testo.")

        Dim PercorsoNomeFile As String = Environment.CurrentDirectory + "\Prova.doc"

        'salvo il documento

        objectDoc.saveas(PercorsoNomeFile)

 

    End Sub


C#

private void BtnNuovo_Click(object sender, RoutedEventArgs e)

        {

            var WordApp = Type.GetTypeFromProgID("Word.Application");

            //Oggetto di istanza Word

            dynamic objectWord = Activator.CreateInstance(WordApp);

            objectWord.Visible = true;

            //creo un nuovo docmento

            dynamic objectDoc = objectWord.documents.add();

            //Imposto il testo

            objectWord.Selection.TypeText("Prova di testo.");

            string PercorsoNomeFile = Environment.CurrentDirectory + "\\Prova.doc";

            //salvo il documento

            objectDoc.saveas(PercorsoNomeFile);

            objectWord.Quit();

        }


Come si vede dal frammento di codice precedente, dopo aver aggiunto il codice, tramite il metodo “TypeText” andiamo a scrivere del testo.
Con il metodo Saveas andiamo a salvare il file.
Per quanto invece riguarda aprire un documento salvato in precedebe il quale nome è presente nel menu dei file recenti, tramite la proprietà “Recent” della classe per la gestione dei documenti in word, possiamo dire quale documento recente utilizzare (tramite l’indice) e con il metodo “Open” aprirlo.
Qui di seguito un frammento di codice per le suddette operazioni.


Vb.Net

Private Sub BtnRecente_Click(sender As Object, e As RoutedEventArgs)

        Dim WordApp = Type.GetTypeFromProgID("Word.Application")

        'Oggetto di istanza Word

        Dim objectWord = Activator.CreateInstance(WordApp)

        objectWord.Visible = True

 
        'Rilevo l'ultimo documento salvato

        Dim objectDoc = objectWord.RecentFiles(1).Open()

        'Per rilevare tutto il testo fino alla fine

        objectWord.Selection.WholeStory()

        'rilevo tutto il testo

        Dim testoDocumento = TryCast(objectWord.Selection.Text, String)

        Dim parole As String() = testoDocumento.Split(" ")

 

        For Each parola As String In parole

            MessageBox.Show(Convert.ToString("Testo: ") & parola)

        Next

 
    End Sub


C#

private void BtnRecente_Click(object sender, RoutedEventArgs e)

        {

            var WordApp = Type.GetTypeFromProgID("Word.Application");

            //Oggetto di istanza Word

            dynamic objectWord = Activator.CreateInstance(WordApp);

            objectWord.Visible = true;


            //Rilevo l'ultimo documento salvato

            dynamic objectDoc = objectWord.RecentFiles(1).Open();

            //Per rilevare tutto il testo fino alla fine

            objectWord.Selection.WholeStory();

            //rilevo tutto il testo

            var testoDocumento = objectWord.Selection.Text as string;

            string[] parole = testoDocumento.Split(new[] { ' ' });

 

            foreach (string parola in parole)

            {

                MessageBox.Show("Testo: " + parola);

            }

            //Chiudo word

            objectWord.Quit();

        }



Il frammento di codice precedente, ha illustrato una tecnica  per aprire l’ultimo documento recente, rilevando il testo (tramite appunto la proprietà “Text”) e crea un array, tramite gli spazi presenti nel documento, che poi visualizzerà le singole parole a video. Il codice  di facile comprensione anche dovuta ai commenti tra le varie righe di codice.

Conclusioni

In questo articolo, è stata fornita al lettore una tematica introduttiva all’utilizzo di Microsoft Word in ambito di WPF. Articolo che permette di avvicinare i programmatori al primo utilizzo con il programma di videoscrittura più usato al mondo.
Altre tecniche di utilizzo si possono acquisire anche utilizzando le macro di VBA presente appunto in Word.

Nessun commento: