Porada: użycie argumentów nazwanych i opcjonalnych w programowaniu pakietu Office

Argumenty nazwane i opcjonalne argumenty zwiększają wygodę, elastyczność i czytelność w programowaniu w języku C#. Ponadto te funkcje znacznie ułatwiają dostęp do interfejsów COM, takich jak interfejsy API automatyzacji pakietu Microsoft Office.

Ważne

Program VSTO (Visual Studio Tools dla pakietu Office) opiera się na programie .NET Framework. Dodatki COM można również napisać za pomocą programu .NET Framework. Nie można utworzyć dodatków pakietu Office z platformami .NET Core i .NET 5+, najnowszymi wersjami platformy .NET. Dzieje się tak, ponieważ program .NET Core/.NET 5+ nie może współpracować z programem .NET Framework w tym samym procesie i może prowadzić do błędów ładowania dodatków. Możesz nadal używać programu .NET Framework do pisania dodatków VSTO i COM dla pakietu Office. Firma Microsoft nie zaktualizuje programu VSTO ani platformy dodatku COM w celu korzystania z platformy .NET Core lub .NET 5+. Możesz korzystać z platform .NET Core i .NET 5+, w tym ASP.NET Core, aby utworzyć stronę serwera dodatków pakietu Office Web.

W poniższym przykładzie metoda ConvertToTable ma 16 parametrów reprezentujących cechy tabeli, takie jak liczba kolumn i wierszy, formatowanie, obramowania, czcionki i kolory. Wszystkie 16 parametrów są opcjonalne, ponieważ przez większość czasu nie chcesz określać określonych wartości dla wszystkich z nich. Jednak bez argumentów nazwanych i opcjonalnych należy podać wartość lub wartość symbolu zastępczego. W przypadku argumentów nazwanych i opcjonalnych można określić wartości tylko dla parametrów wymaganych dla projektu.

Aby wykonać te procedury, na komputerze musi być zainstalowany program Microsoft Office Word.

Uwaga

Na komputerze w poniższych instrukcjach mogą być wyświetlane inne nazwy i lokalizacje niektórych elementów interfejsu użytkownika programu Visual Studio. Te elementy są określane przez numer wersji Visual Studio oraz twoje ustawienia. Aby uzyskać więcej informacji, zobacz Personalizowanie środowiska IDE.

Tworzenie nowej aplikacji konsolowej

Uruchom program Visual Studio. W menu Plik wskaż pozycję Nowy, a następnie wybierz pozycję Projekt. W okienku Kategorie szablonów rozwiń węzeł C#, a następnie wybierz pozycję Windows. Spójrz w górnej części okienka Szablony , aby upewnić się, że program .NET Framework 4 jest wyświetlany w polu Platforma docelowa . W okienku Szablony wybierz pozycję Aplikacja konsolowa. Wpisz nazwę projektu w polu Nazwa . Wybierz przycisk OK. Nowy projekt zostanie wyświetlony w Eksplorator rozwiązań.

Dodawanie odwołania

W Eksplorator rozwiązań kliknij prawym przyciskiem myszy nazwę projektu, a następnie wybierz pozycję Dodaj odwołanie. Zostanie wyświetlone okno dialogowe Dodawanie odwołania . Na stronie .NET wybierz pozycję Microsoft.Office.Interop.Word na liście Nazwa składnika. Wybierz przycisk OK.

Dodawanie niezbędnych dyrektyw using

W Eksplorator rozwiązań kliknij prawym przyciskiem myszy plik Program.cs, a następnie wybierz polecenie Wyświetl kod. Dodaj następujące using dyrektywy na początku pliku kodu:

using Word = Microsoft.Office.Interop.Word;

Wyświetlanie tekstu w dokumencie programu Word

Program W klasie w Program.cs dodaj następującą metodę, aby utworzyć aplikację programu Word i dokument programu Word. Metoda Add ma cztery parametry opcjonalne. W tym przykładzie użyto ich wartości domyślnych. W związku z tym w instrukcji wywołującej nie są konieczne żadne argumenty.

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();
}

Dodaj następujący kod na końcu metody, aby zdefiniować miejsce wyświetlania tekstu w dokumencie oraz tekst do wyświetlenia:

// 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. . .");

Uruchamianie aplikacji

Dodaj następującą instrukcję do main:

DisplayInWord();

Naciśnij klawisze CTRL+F5, aby uruchomić projekt. Zostanie wyświetlony dokument programu Word zawierający określony tekst.

Zmienianie tekstu na tabelę

ConvertToTable Użyj metody , aby ująć tekst w tabeli. Metoda ma 16 parametrów opcjonalnych. Funkcja IntelliSense zawiera opcjonalne parametry w nawiasach kwadratowych, jak pokazano na poniższej ilustracji.

List of parameters for ConvertToTable method

Argumenty nazwane i opcjonalne umożliwiają określenie wartości tylko dla parametrów, które chcesz zmienić. Dodaj następujący kod na końcu metody DisplayInWord , aby utworzyć tabelę. Argument określa, że przecinki w ciągu tekstowym oddzielają range komórki tabeli.

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

Naciśnij klawisze CTRL+F5, aby uruchomić projekt.

Eksperymentowanie z innymi parametrami

Zmień tabelę tak, aby zawierała jedną kolumnę i trzy wiersze, zastąp ostatni wiersz DisplayInWord następującą instrukcją, a następnie wpisz CTRL+F5.

range.ConvertToTable(Separator: ",", AutoFit: true, NumColumns: 1);

Określ wstępnie zdefiniowany format tabeli, zastąp ostatni wiersz DisplayInWord następującą instrukcją, a następnie wpisz CTRL+F5. Format może być dowolnymi stałymi WdTableFormat .

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

Przykład

Poniższy kod zawiera pełny przykład:

using System;
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);
        }
    }
}