Návod: Programování pro Office v jazyce C#
Jazyk C# nabízí funkce, které zlepšují programování systém Microsoft Office. Mezi užitečné funkce jazyka C# patří pojmenované a volitelné argumenty a návratové hodnoty typu dynamic
. V programování modelu COM můžete klíčové slovo vynechat ref
a získat přístup k indexovaným vlastnostem.
Oba jazyky umožňují vkládání informací o typu, což umožňuje nasazení sestavení, která komunikují s komponentami modelu COM bez nasazení primárních sestavení vzájemné spolupráce (PIA) do počítače uživatele. Další informace naleznete v tématu Návod: Vkládání typů ze spravovaných sestavení.
Tento názorný postup ukazuje tyto funkce v kontextu programování Office, ale mnohé z těchto funkcí jsou také užitečné v obecném programování. V názorném postupu použijete k vytvoření excelového sešitu aplikaci Doplněk excelu. Dále vytvoříte wordový dokument, který obsahuje odkaz na sešit. Nakonec zjistíte, jak povolit a zakázat závislost PIA.
Důležité
VSTO (Visual Studio Tools for Office) spoléhá na rozhraní .NET Framework. Doplňky modelu COM lze také napsat pomocí rozhraní .NET Framework. Doplňky pro Office nelze vytvořit pomocí .NET Core a .NET 5 nebo novějších, nejnovějších verzí .NET. Důvodem je to, že .NET Core/.NET 5+ nemůže spolupracovat s rozhraním .NET Framework ve stejném procesu a může vést k selháním načítání doplňků. K psaní doplňků VSTO a COM pro Office můžete dál používat rozhraní .NET Framework. Microsoft nebude aktualizovat VSTO ani doplňkovou platformu MODELU COM, aby používala .NET Core nebo .NET 5+. Pokud chcete vytvořit serverovou stranu webových doplňků Office, můžete využít rozhraní .NET Core a .NET 5 nebo novější, včetně ASP.NET Core.
Požadavky
Abyste mohli tento návod dokončit, musíte mít v počítači nainstalovaný systém Microsoft Office Excel a systém Microsoft Office Word.
Poznámka
Váš počítač může v následujících pokynech zobrazovat odlišné názvy nebo umístění některých prvků uživatelského rozhraní sady Visual Studio. Tyto prvky jsou určeny edicí sady Visual Studio a použitým nastavením. Další informace najdete v tématu Přizpůsobení integrovaného vývojového prostředí.
Nastavení excelové aplikace doplňku
- Spusťte Visual Studio.
- V nabídce Soubor přejděte na příkaz Nový a vyberte Projekt.
- V podokně Nainstalované šablony rozbalte C#, rozbalte Office a vyberte rok verze produktu Office.
- V podokně Šablony vyberte doplněk excelové <verze>.
- V horní části podokna Šablony se ujistěte, že se v poli Cílové rozhraní zobrazí rozhraní .NET Framework 4 nebo novější verze.
- Pokud chcete, zadejte název projektu do pole Název .
- Vyberte OK.
- Nový projekt se zobrazí v Průzkumník řešení.
Přidání odkazů
- V Průzkumník řešení klikněte pravým tlačítkem myši na název projektu a pak vyberte Přidat odkaz. Zobrazí se dialogové okno Přidat odkaz .
- Na kartě Sestavení vyberte Microsoft.Office.Interop.Excel, verzi
<version>.0.0.0
(pro klíč k číslům verzí produktů Office, viz Microsoft Versions), v seznamu Název součásti a podržte stisknutou klávesu CTRL a vyberte Microsoft.Office.Interop.Word,version <version>.0.0.0
. Pokud sestavení nevidíte, budete je možná muset nainstalovat (viz Postup: Instalace primárních sestavení vzájemné spolupráce Office). - Vyberte OK.
Přidání nezbytných příkazů Imports nebo direktiv using
V Průzkumník řešení klikněte pravým tlačítkem myši na soubor ThisAddIn.cs a pak vyberte Zobrazit kód. Pokud ještě neexistují, přidejte do horní části souboru kódu následující using
direktivy (C#).
using System.Collections.Generic;
using Excel = Microsoft.Office.Interop.Excel;
using Word = Microsoft.Office.Interop.Word;
Vytvoření seznamu bankovních účtů
V Průzkumník řešení klikněte pravým tlačítkem na název projektu, vyberte Přidat a pak vyberte Třídu. Pojmenujte třídu Account.cs. Vyberte Přidat. Nahraďte definici Account
třídy následujícím kódem. Definice tříd používají automaticky implementované vlastnosti.
class Account
{
public int ID { get; set; }
public double Balance { get; set; }
}
Chcete-li vytvořit bankAccounts
seznam, který obsahuje dva účty, přidejte následující kód do ThisAddIn_Startup
metody v ThisAddIn.cs. Deklarace seznamu používají inicializátory kolekce.
var bankAccounts = new List<Account>
{
new Account
{
ID = 345,
Balance = 541.27
},
new Account
{
ID = 123,
Balance = -127.44
}
};
Export dat do Excelu
Do stejného souboru přidejte následující metodu ThisAddIn
do třídy. Metoda nastaví excelový sešit a exportuje do něj data.
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();
}
- Metoda Add má volitelný parametr pro zadání konkrétní šablony. Volitelné parametry umožňují vynechat argument pro tento parametr, pokud chcete použít výchozí hodnotu parametru. Vzhledem k tomu, že předchozí příklad neobsahuje žádné argumenty,
Add
použije výchozí šablonu a vytvoří nový sešit. Ekvivalentní příkaz v dřívějších verzích jazyka C# vyžaduje zástupný argument:excelApp.Workbooks.Add(Type.Missing)
. Další informace naleznete v tématu Pojmenované a Volitelné argumenty. - Vlastnosti
Range
objektu Range používají funkci indexovaných vlastností.Offset
Tato funkce umožňuje využívat tyto vlastnosti z typů modelu COM pomocí následující typické syntaxe jazyka C#. Indexované vlastnosti také umožňují použítValue
vlastnost objektuRange
, což eliminuje potřebu použitíValue2
vlastnosti. VlastnostValue
je indexována, ale index je volitelný. Volitelné argumenty a indexované vlastnosti spolupracují v následujícím příkladu.
// Visual C# 2010 provides indexed properties for COM programming.
excelApp.Range["A1"].Value = "ID";
excelApp.ActiveCell.Offset[1, 0].Select();
Indexované vlastnosti nemůžete vytvářet sami. Tato funkce podporuje pouze spotřebu existujících indexovaných vlastností.
Na konec DisplayInExcel
přidejte následující kód a upravte šířky sloupců tak, aby odpovídaly obsahu.
excelApp.Columns[1].AutoFit();
excelApp.Columns[2].AutoFit();
Tyto doplňky ukazují další funkci jazyka C#: zpracování Object
hodnot vrácených z hostitelů modelu COM, jako je Office, jako by měly typ dynamické. Objekty MODELU COM se považují za dynamic
automaticky, pokud má funkce Embed Interop Types výchozí hodnotu True
, nebo ekvivalentní, pokud odkazujete na sestavení s možností kompilátoru EmbedInteropTypes . Další informace o vkládání typů interoperability naleznete v postupech "Vyhledání odkazu PIA" a "Obnovení závislosti PIA" dále v tomto článku. Další informace o nástroji , naleznete v dynamic
tématu dynamické nebo použití typu dynamické.
Vyvolání displayInExcel
Na konec ThisAddIn_StartUp
metody přidejte následující kód. Volání obsahuje DisplayInExcel
dva argumenty. Prvním argumentem je název seznamu zpracovaných účtů. Druhým argumentem je víceřádkový výraz lambda definující způsob zpracování dat. Hodnoty ID
a balance
hodnoty pro každý účet se zobrazí v sousedních buňkách a řádek se zobrazí červeně, pokud je zůstatek menší než nula. Další informace najdete v tématu Výrazy lambda.
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;
}
});
Program spustíte stisknutím klávesy F5. Zobrazí se excelový list, který obsahuje data z účtů.
Přidání wordového dokumentu
Na konec ThisAddIn_StartUp
metody přidejte následující kód pro vytvoření wordového dokumentu, který obsahuje odkaz na excelový sešit.
var wordApp = new Word.Application();
wordApp.Visible = true;
wordApp.Documents.Add();
wordApp.Selection.PasteSpecial(Link: true, DisplayAsIcon: true);
Tento kód ukazuje několik funkcí jazyka C#: schopnost vynechat ref
klíčové slovo v programování modelu COM, pojmenovaných argumentů a volitelných argumentů. Metoda PasteSpecial má sedm parametrů, z nichž všechny jsou volitelné referenční parametry. Pojmenované a volitelné argumenty umožňují určit parametry, ke které chcete získat přístup podle názvu, a odesílat argumenty pouze těmto parametrům. V tomto příkladu argumenty označují vytvoření odkazu na sešit ve schránce (parametr Link
) a zobrazení odkazu v dokumentu aplikace Word jako ikony (parametr DisplayAsIcon
). Jazyk C# také umožňuje vynechat ref
klíčové slovo pro tyto argumenty.
Spuštění aplikace
Stisknutím klávesy F5 spusťte aplikaci. Excel spustí a zobrazí tabulku, která obsahuje informace ze dvou účtů v bankAccounts
aplikaci . Zobrazí se wordový dokument, který obsahuje odkaz na excelovou tabulku.
Vyčištění dokončeného projektu
V sadě Visual Studio vyberte v nabídce Sestavení možnost Vyčistit řešení. V opačném případě se doplněk spustí při každém otevření Excelu na počítači.
Vyhledání odkazu PIA
- Spusťte aplikaci znovu, ale nevybírejte možnost Vyčistit řešení.
- Vyberte tlačítko Start. Vyhledejte verzi> sady Microsoft Visual Studio <a otevřete příkazový řádek pro vývojáře.
- Zadejte
ildasm
příkazový řádek pro vývojáře pro okno sady Visual Studio a stiskněte klávesu ENTER. Zobrazí se okno IL DASM. - V nabídce Soubor v okně IL DASM vyberte Otevřít soubor>. Poklikejte na verzi> sady Visual Studio <a potom poklikejte na projekty. Otevřete složku projektu a vyhledejte složku bin/Debug pro název projektu.dll. Poklikejte na název projektu.dll. V novém okně se kromě odkazů na další moduly a sestavení zobrazí atributy projektu. Sestavení obsahuje obory
Microsoft.Office.Interop.Excel
názvů aMicrosoft.Office.Interop.Word
. Kompilátor ve výchozím nastavení v sadě Visual Studio importuje typy, které potřebujete, z odkazované PIA do sestavení. Další informace naleznete v tématu Postupy: Zobrazení obsahu sestavení. - Poklikejte na ikonu MANIFESTu. Zobrazí se okno, které obsahuje seznam sestavení, která obsahují položky odkazované projektem.
Microsoft.Office.Interop.Excel
aMicrosoft.Office.Interop.Word
nejsou v seznamu. Vzhledem k tomu, že jste do sestavení naimportovali typy, které projekt potřebuje, nemusíte instalovat odkazy na PIA. Import typů do sestavení usnadňuje nasazení. PiA nemusí být přítomné na počítači uživatele. Aplikace nevyžaduje nasazení konkrétní verze PIA. Aplikace můžou pracovat s několika verzemi Office za předpokladu, že potřebná rozhraní API existují ve všech verzích. Vzhledem k tomu, že nasazení pia už není nutné, můžete vytvořit aplikaci v pokročilých scénářích, které fungují s několika verzemi Office, včetně předchozích verzí. Váš kód nemůže používat žádná rozhraní API, která nejsou dostupná ve verzi Office, se kterou pracujete. Není vždy jasné, jestli bylo konkrétní rozhraní API dostupné v dřívější verzi. Práce s dřívějšími verzemi Office se nedoporučuje. - Zavřete okno manifestu a okno sestavení.
Obnovení závislosti PIA
- V Průzkumník řešení vyberte tlačítko Zobrazit všechny soubory. Rozbalte složku Reference a vyberte Microsoft.Office.Interop.Excel. Stisknutím klávesy F4 zobrazte okno Vlastnosti .
- V okně Vlastnosti změňte vlastnost Embed Interop Types z True na False.
- Opakujte kroky 1 a 2 v tomto postupu pro
Microsoft.Office.Interop.Word
. - V jazyce C# zakomentujte dvě volání na
Autofit
konciDisplayInExcel
metody. - Stisknutím klávesy F5 ověřte, že projekt stále běží správně.
- Opakováním kroků 1 až 3 z předchozího postupu otevřete okno sestavení. Všimněte si, že
Microsoft.Office.Interop.Word
vMicrosoft.Office.Interop.Excel
seznamu vložených sestavení už nejsou. - Poklikejte na ikonu MANIFESTu a projděte seznam odkazovaných sestavení. Obě
Microsoft.Office.Interop.Word
aMicrosoft.Office.Interop.Excel
jsou v seznamu. Vzhledem k tomu, že aplikace odkazuje na kódy PIA aplikace Excel a Word, a vlastnost Embed Interop Types je False, obě sestavení musí existovat na počítači koncového uživatele. - V sadě Visual Studio vyberte v nabídce Sestavení možnost Vyčistit řešenía vyčistíte dokončený projekt.
Viz také
- Automaticky implementované vlastnosti (C#)
- Inicializátory objektu a kolekce
- Visual Studio Tools for Office (VSTO)
- Pojmenované a nepovinné argumenty
- dynamic
- Použití typu dynamic
- Výrazy lambda (C#)
- Návod: Vložení informací o typu ze sestavení sady Microsoft Office v sadě Visual Studio
- Návod: Vložení typů ze spravovaných sestavení
- Návod: Vytvoření prvního doplňku VSTO pro Excel
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro