Wskazówki: Programowanie Office (C# i Visual Basic)
Visual Studio 2010wprowadzono nowe funkcje w języku C# i Visual Basic, które usprawniają programowania Microsoft Office.Każdy język został dodany funkcje, które już istnieją w innych wersjach językowych.
Nowe funkcje w języku C# obejmują nazwanych i opcjonalny argument, zwrócić wartości, które mają typ dynamici w modelu COM programowania, możliwość pominąć ref słów kluczowych i dostępu do właściwości indeksowane.Nowe funkcje w języku Visual Basic obejmują automatycznie implementowane właściwości instrukcje w wyrażenia lambda i inicjatory kolekcji.
Obu językach, należy włączyć osadzanie informacji o typie, które umożliwia wdrażanie zestawów, które komunikują się ze składnikami COM bez wdrażania podstawowe zestawy (PIAs) na komputerze użytkownika.Aby uzyskać więcej informacji, zobacz Wskazówki: osadzanie typów z zarządzanych zestawów (C# i Visual Basic).
Niniejszy przewodnik pokazuje nowych funkcji w kontekście programowania pakietu Office, ale wiele z nich jest przydatne, ogólnie programowania.Przewodnik zostanie najpierw użyć aplikacji — w programie Excel do utworzenia skoroszytu programu Excel.Spowoduje to utworzenie dokumentu programu Word zawierającego łącze do skoroszytu.Na koniec zobaczysz, jak zależności PIA można ją włączyć lub wyłączyć.
Wymagania wstępne
Program Microsoft Office Excel 2013 (lub wersji 2007 lub nowszej) musi być i Microsoft Office Word 2013 (lub wersji 2007 lub nowszej) zainstalowane na tym komputerze do ukończenia tej procedury.
Jeśli używasz systemu operacyjnego, który jest starsza niż Windows Vista, upewnij się, że Program .NET Framework 2,0 jest zainstalowana.
[!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 Dostosowywanie ustawień środowiska deweloperskiego w Visual Studio.
Aby skonfigurować aplikację dodatku programu Excel
Uruchom program Visual Studio.
Na pliku menu, wskaż opcję nowy, a następnie kliknij przycisk projektu.
W zainstalowane szablony okienku rozwiń Visual Basic lub Visual C#, rozwiń węzeł Office, a następnie kliknij przycisk 2013 (lub 2010 lub 2007).
W szablony okienku kliknij programu Excel 2013 dodatku (lub programu Excel 2010 dodatku lub programu Excel 2007 dodatku).
Szukaj w górnej części szablony okienka upewnij się, że .NET Framework 4, lub nowsza wersja, pojawi się w docelowa Platforma pola.
Wpisz nazwę projektu w nazwa pole, aby.
Kliknij przycisk OK.
Zostanie wyświetlony nowy projekt Eksploratora rozwiązań.
Odwołuje się do dodania
W Eksploratora rozwiązań, kliknij prawym przyciskiem myszy nazwę projektu, a następnie kliknij przycisk Dodaj odwołanie.Pojawi się okno dialogowe Dodaj odwołanie.
Na zestawy wybierz kartę Microsoft.Office.Interop.Excel, wersja 15.0.0.0 (lub 14.0.0.0 programu Excel 2010 w wersji lub 12.0.0.0 dla programu Excel 2007), w nazwa składnika liście, a następnie przytrzymaj klawisz CTRL klucza i wybierz Microsoft.Office.Interop.Word, w wersji 15.0.0.0 (lub 14.0.0.0 2010 programu Word lub 12.0.0.0 programu Word 2007).Jeśli zestawy nie są widoczne, może być konieczne do zapewnienia zainstalowane i wyświetlane (zobacz Porady: instalowanie podstawowych zestawów międzyoperacyjnych pakietu Office).
Kliknij przycisk OK.
Aby dodać niezbędne instrukcje importowania lub za pomocą dyrektyw
W Eksploratora rozwiązań, kliknij prawym przyciskiem myszy ThisAddIn.vb lub ThisAddIn.cs pliku, a następnie kliknij przycisk widoku Kod.
Dodaj następujący Imports raportów (Visual Basic) lub using dyrektywy (C#) na początku pliku kodu, jeśli nie są one już zainstalowane.
Imports Microsoft.Office.Interop
using System.Collections.Generic; using Excel = Microsoft.Office.Interop.Excel; using Word = Microsoft.Office.Interop.Word;
Aby utworzyć listę kont bank
W Eksploratora rozwiązań, kliknij prawym przyciskiem myszy nazwę projektu, kliknij przycisk Dodaj, a następnie kliknij przycisk klasy.Nazwa klasy Account.vb, korzystając z języka Visual Basic lub Account.cs Jeśli używasz języka C#.Kliknij przycisk Dodaj.
Zastąp definicji Account klas z następującego kodu.Użyj definicje klas automatycznie implementowane właściwości, korzystasz z Visual Basic w programie Visual Studio 2010.Aby uzyskać więcej informacji, zobacz Właściwości zaimplementowane automatycznie (Visual Basic).
Public Class Account Property ID As Integer = -1 Property Balance As Double End Class
class Account { public int ID { get; set; } public double Balance { get; set; } }
Aby utworzyć bankAccounts listy, która zawiera dwa konta, Dodaj następujący kod, aby ThisAddIn_Startup metody ThisAddIn.vb lub ThisAddIn.cs.Użyj deklaracji listy inicjatory kolekcji, korzystasz z Visual Basic w programie Visual Studio 2010.Aby uzyskać więcej informacji, zobacz Inicjatory kolekcji (Visual Basic).
Dim bankAccounts As New List(Of Account) From { New Account With { .ID = 345, .Balance = 541.27 }, New Account With { .ID = 123, .Balance = -127.44 } }
var bankAccounts = new List<Account> { new Account { ID = 345, Balance = 541.27 }, new Account { ID = 123, Balance = -127.44 } };
Aby wyeksportować dane do programu Excel
W tym samym pliku, Dodaj następującej metody ThisAddIn klasy.Metoda konfiguruje skoroszytu programu Excel i eksportuje dane do niej.
Sub DisplayInExcel(ByVal accounts As IEnumerable(Of Account), ByVal DisplayAction As Action(Of Account, Excel.Range)) With Me.Application ' Add a new Excel workbook. .Workbooks.Add() .Visible = True .Range("A1").Value = "ID" .Range("B1").Value = "Balance" .Range("A2").Select() For Each ac In accounts DisplayAction(ac, .ActiveCell) .ActiveCell.Offset(1, 0).Select() Next ' Copy the results to the Clipboard. .Range("A1:B3").Copy() End With End Sub
void DisplayInExcel(IEnumerable<Account> accounts, Action<Account, Excel.Range> DisplayFunc) { var excelApp = this.Application; // Add a new Excel workbook. excelApp.Workbooks.Add(); excelApp.Visible = true; excelApp.Range["A1"].Value = "ID"; excelApp.Range["B1"].Value = "Balance"; excelApp.Range["A2"].Select(); foreach (var ac in accounts) { DisplayFunc(ac, excelApp.ActiveCell); excelApp.ActiveCell.Offset[1, 0].Select(); } // Copy the results to the Clipboard. excelApp.Range["A1:B3"].Copy(); }
Dwa nowe C# funkcje są używane w tej metody.Obie te funkcje już istnieje w języku Visual Basic.
Metoda Dodaj ma parametr opcjonalny służącą do określonego szablonu.Parametry opcjonalne, nowe w Visual C# 2010, można pominąć argument dla tego parametru, jeśli chcesz użyć wartości domyślnej wartości parametru.Brak argumentu są wysyłane w poprzednim przykładzie Add korzysta z domyślnego szablonu i tworzy nowy skoroszyt.Instrukcja równoważne we wcześniejszych wersjach programu C# wymaga argumentu symbol zastępczy: excelApp.Workbooks.Add(Type.Missing).
Aby uzyskać więcej informacji, zobacz Argumenty nazwane i opcjonalne (Przewodnik programowania w języku C#).
Range i Offset właściwości zakres obiektu użyj właściwości indeksowane funkcji.Ta funkcja umożliwia użycie tych właściwości z typami COM przy użyciu następującej typowe C# składni.Właściwości indeksowane umożliwiają także użyć Value właściwości Range obiektu, eliminując konieczność użycia Value2 właściwości.Value Właściwość jest indeksowany, ale indeks jest opcjonalna.Argumenty opcjonalne i właściwości indeksowane współpracy w poniższym przykładzie.
// Visual C# 2010 provides indexed properties for COM programming. excelApp.Range["A1"].Value = "ID"; excelApp.ActiveCell.Offset[1, 0].Select();
We wcześniejszych wersjach języka specjalne następującej składni jest wymagany.
// In Visual C# 2008, you cannot access the Range, Offset, and Value // properties directly. excelApp.get_Range("A1").Value2 = "ID"; excelApp.ActiveCell.get_Offset(1, 0).Select();
Nie można utworzyć właściwości indeksowane własny.Funkcja obsługuje tylko zużycie istniejących właściwości indeksowane.
Aby uzyskać więcej informacji, zobacz Porady: użycie właściwości indeksowanych w programowaniu usługi międzyoperacyjnej modelu COM (Przewodnik programowania w języku C#).
Dodaj następujący kod na końcu DisplayInExcel do dopasowania szerokości kolumn, aby dopasować zawartość.
' Add the following two lines at the end of the With statement. .Columns(1).AutoFit() .Columns(2).AutoFit()
excelApp.Columns[1].AutoFit(); excelApp.Columns[2].AutoFit();
Te modyfikacje zademonstrować innego nową funkcją w języku C# 2010: przetwarzające Object wartości zwracane z hostów COM, takich jak Office tak, jakby mają typu dynamiczne.Dzieje się tak automatycznie po osadzić typy usługę Międzyoperacyjną ma ustawioną wartość domyślną True, lub ekwiwalentnie, gdy zestawu odwołuje się do niego /link opcję kompilatora.Typ dynamic umożliwia LCID, już dostępna w języku Visual Basic i pozwala uniknąć rzutowania jawne, wymagane w Visual C# 2008 i wcześniejszych wersji języka.
Na przykład excelApp.Columns[1] zwraca Object, i AutoFit jest program Excel zakres metody.Bez dynamic, należy zrzutować obiekcie zwracanym przez excelApp.Columns[1] jako wystąpienie Range przed wywołaniem metody AutoFit.
// Casting is required in Visual C# 2008. ((Excel.Range)excelApp.Columns[1]).AutoFit(); // Casting is not required in Visual C# 2010. excelApp.Columns[1].AutoFit();
Aby uzyskać więcej informacji na temat osadzanie typy współdziałania Zobacz procedur "można znaleźć odwołania PIA" i "Aby przywrócić zależności PIA" dalej w tym temacie.Aby uzyskać więcej informacji na temat dynamic, zobacz dynamic (odwołanie w C#) lub Używanie typu dynamicznego (Przewodnik programowania w języku C#).
Do wywołania DisplayInExcel
Dodaj następujący kod na końcu ThisAddIn_StartUp metody.Wywołanie DisplayInExcel zawiera dwa argumenty.Pierwszy argument jest nazwa listy kont do przetworzenia.Drugi argument jest wyrażenia lambda wielowierszowym definiujący, jak dane są do przetworzenia.ID i balance wartości dla każdego konta są wyświetlane w sąsiadujących komórek i wiersza jest wyświetlany w kolorze czerwonym, jeśli saldo jest mniejsza od zera.Wyrażenia lambda wielowierszowym są nową funkcją w języku Visual Basic 2010.Aby uzyskać więcej informacji, zobacz Lambda — Wyrażenia (Visual Basic).
DisplayInExcel(bankAccounts, Sub(account, cell) ' This multiline lambda expression sets custom ' processing rules for the bankAccounts. cell.Value = account.ID cell.Offset(0, 1).Value = account.Balance If account.Balance < 0 Then cell.Interior.Color = RGB(255, 0, 0) cell.Offset(0, 1).Interior.Color = RGB(255, 0, 0) End If End Sub)
DisplayInExcel(bankAccounts, (account, cell) => // This multiline lambda expression sets custom processing rules // for the bankAccounts. { cell.Value = account.ID; cell.Offset[0, 1].Value = account.Balance; if (account.Balance < 0) { cell.Interior.Color = 255; cell.Offset[0, 1].Interior.Color = 255; } });
Aby uruchomić program, naciśnij klawisz F5.Zostanie wyświetlony arkusza programu Excel, zawierający dane z kont.
Aby dodać dokumentu programu Word
Dodaj następujący kod na końcu ThisAddIn_StartUp metodę umożliwiającą utworzenie dokumentu programu Word, który zawiera łącze do skoroszytu programu Excel.
Dim wordApp As New Word.Application wordApp.Visible = True wordApp.Documents.Add() wordApp.Selection.PasteSpecial(Link:=True, DisplayAsIcon:=True)
var wordApp = new Word.Application(); wordApp.Visible = true; wordApp.Documents.Add(); wordApp.Selection.PasteSpecial(Link: true, DisplayAsIcon: true);
Ten kod przedstawia wiele nowych funkcji w języku C#: możliwość pominąć ref słowo kluczowe w programowania modelu COM, nazwanych argumentów i argumentów opcjonalnych.Te funkcje są już istnieje w języku Visual Basic.PasteSpecial metoda ma siedmiu parametry, które zdefiniowano jako parametry opcjonalne odwołanie.Przed Visual C# 2010 trzeba było zdefiniować zmienne obiektu ma być używana jako argumentów dla parametrów siedmiu, nawet wtedy, gdy masz żadnych istotnych wartości do wysłania.Nazwany i opcjonalny argument pozwalają określić parametry, które mają dostępu do według nazwy i wysyłania argumenty tylko te parametry.W tym przykładzie argumenty są wysyłane do wskazania, że można utworzyć łącze do skoroszytu w Schowku (parametr Link), i że łącze jest wyświetlane w dokumencie programu Word w postaci ikony (parametr DisplayAsIcon).Program Visual C# 2010 można również pominąć ref słowa kluczowego dla tych argumentów.Porównaj następującego segmentu kodu Visual C# 2008 z jednowierszowego wymagane w Visual C# 2010:
// Call to PasteSpecial in Visual C# 2008. object iconIndex = Type.Missing; object link = true; object placement = Type.Missing; object displayAsIcon = true; object dataType = Type.Missing; object iconFileName = Type.Missing; object iconLabel = Type.Missing; wordApp.Selection.PasteSpecial(ref iconIndex, ref link, ref placement, ref displayAsIcon, ref dataType, ref iconFileName, ref iconLabel); // Call to PasteSpecial in Visual C# 2010. wordApp.Selection.PasteSpecial(Link: true, DisplayAsIcon: true);
Aby uruchomić aplikację
- Naciśnij klawisz F5, aby uruchomić aplikację.Program Excel i wyświetlenie tabelę zawierającą informacje zawarte w tych dwóch kont w bankAccounts.Następnie dokumentu programu Word pojawi się zawierającego łącze do tabeli programu Excel.
Aby wyczyścić ukończone projektu
- W programie Visual Studio, kliknij przycisk czystego rozwiązania na tworzenie menu.W przeciwnym razie dodatek zostanie uruchomiony zawsze po otwarciu programu Excel na komputerze użytkownika.
Odwołanie PIA
Uruchom ponownie aplikację, ale nie zostanie kliknięty przycisk czystego rozwiązania.
Na Start menu, kliknij przycisk wszystkie programy.Następnie kliknij przycisk programu Microsoft Visual Studio 2013, następnie programu Visual Studio Tools, następnie wiersz polecenia programu Visual Studio (2013 r).
Typ narzędzia ildasm w poleceniu programu Visual Studio (2013) okna wiersza, a następnie naciśnij klawisz ENTER.Zostanie wyświetlone okno IL DASM.
Na pliku kliknij menu w oknie IL DASM Otwórz.Kliknij dwukrotnie programu Visual Studio 2013, a następnie kliknij dwukrotnie projektów.Otwórz folder projektu i wyglądu w folderze bin/debugowania dla swoją nazwę projektu.dll.Kliknij dwukrotnie swoją nazwę projektu.dll.Nowe okno wyświetla swój projekt, oprócz odwołuje się do innych modułów i zestawów.Należy zauważyć, że obszary nazw Microsoft.Office.Interop.Excel i Microsoft.Office.Interop.Word znajdują się w zestawie.Domyślnie w programie Visual Studio 2013 kompilator importuje typów, których potrzebujesz z występujących w odwołaniu PIA do swojego zestawu.
Aby uzyskać więcej informacji, zobacz Porady: wyświetlanie zawartości zestawu.
Kliknij dwukrotnie MANIFEST ikonę.Zostanie wyświetlone okno zawierający listę zestawów, które zawierają elementy, które odwołują się do projektu.Microsoft.Office.Interop.Exceli Microsoft.Office.Interop.Word nie znajdują się na liście.Ponieważ typów, których wymaga projektu zostały zaimportowane do swojego zestawu, odwołania do PIA nie są niezbędny.Ułatwia to wdrożenia.PIAs musi być zainstalowany na komputerze użytkownika, a ponieważ aplikacja nie wymaga wdrażania o określonej wersji PIA, aplikacje mogą służyć do pracy z wielu wersji pakietu Office, pod warunkiem, że wymagane interfejsy API istnieje we wszystkich wersjach.
Ponieważ wdrożeniu oprogramowania PIAs nie jest już potrzebna, można utworzyć w scenariuszach zaawansowane, na których działa z wielu wersji pakietu Office, łącznie z wcześniejszych wersji aplikacji.Jednak to działa tylko wtedy, gdy kod nie są używane w żadnych interfejsów API, które nie są dostępne w wersji pakietu Office, w którym pracujesz.Nie zawsze jest jasne czy danego interfejsu API jest dostępny w starszej wersji i Przyczyna pracy z wcześniejszych wersji pakietu Office nie jest zalecane.
[!UWAGA]
Pakiet Office nie opublikował PIAs przed Office 2003.W związku z tym jedynym sposobem generowania współdziałania zestawu dla pakietu Office 2002 lub starsze wersje jest importowania odwołania COM.
Zamknięcie okna manifestu i zestawu.
Aby przywrócić zależności PIA
W Eksploratora rozwiązań, kliknij przycisk Pokaż wszystkie pliki przycisku.Rozwiń węzeł odwołuje się do i wybierz polecenie Microsoft.Office.Interop.Excel.Naciśnij klawisz F4, aby wyświetlić okno Właściwości.
W właściwościs oknie zmiany osadzić typy usługę Międzyoperacyjną właściwości z True do False.
Powtórz kroki 1 i 2 w tej procedurze dla Microsoft.Office.Interop.Word.
W języku C#, komentarz dwóch wywołania metody Autofit na końcu DisplayInExcel metody.
Naciśnij klawisz F5, aby sprawdzić, czy projektu nadal działa poprawnie.
Powtórz kroki 1-3 poprzedniej procedury, aby otworzyć okno zestawu.Należy zauważyć, że Microsoft.Office.Interop.Word i Microsoft.Office.Interop.Excel nie są już na liście, embedded zestawów.
Kliknij dwukrotnie MANIFEST ikonę i przewiń listę odwołuje się do zestawów.Obie Microsoft.Office.Interop.Word i Microsoft.Office.Interop.Excel znajdują się na liście.Ponieważ aplikacja odwołuje się do programu Excel i PIAs słowa i osadzić typy usługę Międzyoperacyjną ma ustawioną wartość właściwości False, oba zestawy musi istnieć na komputerze użytkownika końcowego.
W programie Visual Studio, kliknij przycisk czystego rozwiązania na tworzenie menu, aby wyczyścić ukończone projektu.
Zobacz też
Zadania
Wskazówki: osadzanie informacji o typie z zestawów Microsoft Office (C# i Visual Basic)
Wskazówki: osadzanie typów z zarządzanych zestawów (C# i Visual Basic)
Wskazówki: tworzenie pierwszego dodatku na poziomie aplikacji dla programu Excel
Informacje
Właściwości zaimplementowane automatycznie (Przewodnik programowania w języku C#)
Inicjatory obiektów i kolekcji (Przewodnik programowania w języku C#)
Wyrażenia lambda (Przewodnik programowania w języku C#)
Współdziałanie (Przewodnik programowania w języku C#)
Koncepcje
Właściwości zaimplementowane automatycznie (Visual Basic)
Inicjatory kolekcji (Visual Basic)
Parametry opcjonalne (Visual Basic)
Przekazywanie argumentów według pozycji i według nazwy (Visual Basic)
Argumenty nazwane i opcjonalne (Przewodnik programowania w języku C#)
Wczesne i późne wiązania (Visual Basic)
Lambda — Wyrażenia (Visual Basic)
Inne zasoby
Używanie typu dynamicznego (Przewodnik programowania w języku C#)