Procedura: utilizzare argomenti denominati e facoltativi nella programmazione di Office (Guida per programmatori C#)

Gli argomenti denominati e gli argomenti facoltativi, introdotti in Visual C# 2010, migliorano la praticità, la flessibilità e la leggibilità nella programmazione C#. Queste funzionalità, inoltre, semplificano notevolmente l'accesso alle interfacce COM, quali le API di automazione di Microsoft Office.

Nell'esempio seguente, il metodo ConvertToTable dispone di sedici parametri che rappresentano le caratteristiche di una tabella, ad esempio il numero di colonne e di righe, la formattazione, i bordi, i tipi di carattere e i colori. I sedici parametri sono tutti facoltativi, perché in genere non si desidera specificare particolari valori per tutti. Senza gli argomenti denominati e facoltativi, tuttavia, è necessario specificare un valore o un valore di segnaposto per ogni parametro. Con gli argomenti denominati e facoltativi, si specificano valori solo per i parametri obbligatori per il progetto.

Per completare queste procedure, è necessario che sia installato Microsoft Office Word sul computer.

Nota

Nel computer in uso è possibile che vengano visualizzati nomi o percorsi diversi per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per ulteriori informazioni vedere Impostazioni di Visual Studio.

Per creare una nuova applicazione console

  1. Avviare Visual Studio.

  2. Scegliere Nuovo dal menu File, quindi Progetto.

  3. Nel riquadro Categorie di modelli espandere Visual C#, quindi fare clic su Windows.

  4. Verificare che nella parte superiore del riquadro Modelli sia visualizzato .NET Framework 4 nella casella Versione .NET Framework di destinazione.

  5. Nel riquadro Modelli fare clic su Applicazione console.

  6. Digitare un nome per il progetto nel campo Nome.

  7. Scegliere OK.

    Il nuovo progetto verrà visualizzato in Esplora soluzioni.

Per aggiungere un riferimento

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nome del progetto, quindi scegliere Aggiungi riferimento. Verrà visualizzata la finestra di dialogo Aggiungi riferimento.

  2. Nella pagina .NET selezionare Microsoft.Office.Interop.Word nell'elenco Nome componente.

  3. Scegliere OK.

Per aggiungere le direttive using necessarie

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul file Program.cs, quindi scegliere Visualizza codice.

  2. Aggiungere le seguenti direttive using all'inizio del file di codice.

    using Word = Microsoft.Office.Interop.Word;
    

Per visualizzare il testo in un documento di Word

  1. Nella classe Program in Program.cs aggiungere il metodo seguente per creare un'applicazione di Word e un documento di Word. Il metodo Add dispone di quattro parametri facoltativi. In questo esempio vengono utilizzati i valori predefiniti. Non è pertanto necessario alcun argomento nell'istruzione di chiamata.

    static void DisplayInWord()
    {
        var wordApp = new Word.Application();
        wordApp.Visible = true;
        // docs is a collection of all the Document objects currently 
        // open in Word.
        Word.Documents docs = wordApp.Documents;
    
        // Add a document to the collection and name it doc. 
        Word.Document doc = docs.Add();
    }
    
  2. Aggiungere il codice seguente alla fine del metodo per definire dove visualizzare il testo nel documento e quale testo visualizzare.

    // Define a range, a contiguous area in the document, by specifying
    // a starting and ending character position. Currently, the document
    // is empty.
    Word.Range range = doc.Range(0, 0);
    
    // Use the InsertAfter method to insert a string at the end of the
    // current range.
    range.InsertAfter("Testing, testing, testing. . .");
    

Per eseguire l'applicazione

  1. Aggiungere l'istruzione riportata di seguito a Main.

    DisplayInWord();
    
  2. Premere CTRL+F5 per eseguire il progetto. Verrà visualizzato un documento di Word contenente il testo specificato.

Per convertire il testo in una tabella

  1. Utilizzare il metodo ConvertToTable per racchiudere il testo in una tabella. Il metodo dispone di sedici parametri facoltativi. IntelliSense racchiude tra parentesi i parametri facoltativi, come mostrato nell'immagine seguente.

    Parametri ConvertToTable

    Elenco di parametri per il metodo ConvertToTable.

    Gli argomenti denominati e facoltativi consentono di specificare valori esclusivamente per i parametri che si desidera modificare. Aggiungere il seguente codice alla fine del metodo DisplayInWord per creare una tabella semplice. L'argomento indica che le virgole nella stringa di testo in range separano le celle della tabella.

    // Convert to a simple table. The table will have a single row with
    // three columns.
    range.ConvertToTable(Separator: ",");
    

    Nelle versioni precedenti di C# la chiamata a ConvertToTable richiede un argomento di riferimento per ogni parametro, come mostrato nel codice seguente.

    // Call to ConvertToTable in Visual C# 2008 or earlier. This code
    // is not part of the solution.
    var missing = Type.Missing;
    object separator = ",";
    range.ConvertToTable(ref separator, ref missing, ref missing,
        ref missing, ref missing, ref missing, ref missing,
        ref missing, ref missing, ref missing, ref missing,
        ref missing, ref missing, ref missing, ref missing,
        ref missing);
    
  2. Premere CTRL+F5 per eseguire il progetto.

Per provare a utilizzare altri parametri

  1. Per modificare la tabella in modo che contenga una colonna e tre righe, sostituire l'ultima riga in DisplayInWord con l'istruzione seguente, quindi premere CTRL+F5.

    range.ConvertToTable(Separator: ",", AutoFit: true, NumColumns: 1);
    
  2. Per specificare un formato predefinito per la tabella, sostituire l'ultima riga in DisplayInWord con l'istruzione seguente, quindi premere CTRL+F5. Il formato può corrispondere a qualsiasi costante WdTableFormat.

    range.ConvertToTable(Separator: ",", AutoFit: true, NumColumns: 1,
        Format: Word.WdTableFormat.wdTableFormatElegant);
    

Esempio

Il codice seguente include l'esempio completo.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Word = Microsoft.Office.Interop.Word;


namespace OfficeHowTo
{
    class WordProgram
    {
        static void Main(string[] args)
        {
            DisplayInWord();
        }

        static void DisplayInWord()
        {
            var wordApp = new Word.Application();
            wordApp.Visible = true;
            // docs is a collection of all the Document objects currently 
            // open in Word.
            Word.Documents docs = wordApp.Documents;

            // Add a document to the collection and name it doc. 
            Word.Document doc = docs.Add();

            // Define a range, a contiguous area in the document, by specifying
            // a starting and ending character position. Currently, the document
            // is empty.
            Word.Range range = doc.Range(0, 0);

            // Use the InsertAfter method to insert a string at the end of the
            // current range.
            range.InsertAfter("Testing, testing, testing. . .");

            // You can comment out any or all of the following statements to
            // see the effect of each one in the Word document.

            // Next, use the ConvertToTable method to put the text into a table. 
            // The method has 16 optional parameters. You only have to specify
            // values for those you want to change.

            // Convert to a simple table. The table will have a single row with
            // three columns.
            range.ConvertToTable(Separator: ",");

            // Change to a single column with three rows..
            range.ConvertToTable(Separator: ",", AutoFit: true, NumColumns: 1);

            // Format the table.
            range.ConvertToTable(Separator: ",", AutoFit: true, NumColumns: 1,
                Format: Word.WdTableFormat.wdTableFormatElegant);
        }
    }
}

Vedere anche

Concetti

Argomenti denominati e facoltativi (Guida per programmatori C#)