Teď jste offline a čekáte, až se znova připojí internet.

Jak automatizovat aplikaci Microsoft Excel pomocí jazyka Microsoft Visual C# .NET

Podpora Office 2003 byla ukončena.

Společnost Microsoft ukončila dne 8. dubna 2014 podporu Office 2003. Tato změna ovlivnila aktualizace softwaru a možnosti zabezpečení. Další informace o tom, co to pro vás znamená a jak zajistit ochranu

Souhrn
Tento článek ukazuje, jak lze vytvořit klienta pro automatizaci v aplikaci Microsoft Excel pomocí jazyka Microsoft Visual C# .NET.
Další informace
Automatizace je proces, který umožní aplikacím naprogramovaným v jazycích, jako je Visual C# .NET, programově řídit jiné aplikace. Automatizace v aplikaci Excel umožňuje provést akce, jako je vytvoření nového sešitu, vložení dat do sešitu nebo vytváření grafů. Téměř všechny akce, které lze provést ručně pomocí uživatelského rozhraní, je možné v aplikaci Excel a dalších aplikacích systému Microsoft Office provést programově pomocí automatizace.

Aplikace Excel umožňuje tuto programovou funkcionalitu pomocí objektového modelu. Objektový model je kolekce tříd a metod, které slouží jako protějšek logických komponent aplikace Excel. Máme například objekt Aplikace, objekt Sešit a objekt List, přičemž každý zahrnuje funkcionalitu těchto částí aplikace Excel. Pro přístup k objektovému modelu z jazyka Visual C# .NET můžete nastavit odkaz na projekt v knihovně typů.

Tento článek ukazuje, jak správně nastavit odkaz na projekt v aplikaci Excel v knihovně typů jazyka Visual C# .NET a poskytuje vzorový kód pro automatizaci aplikace Excel.

Vytvoření klienta pro automatizaci aplikace Microsoft Excel

  1. Spusťte aplikaci Visual Studio .NET.
  2. V nabídce Soubor klepněte na příkaz Nový a potom klepněte na příkaz Projekt. Z typů projektů v jazyce Visual C# vyberte typ Aplikace Windows. Jako výchozí je vytvořen formulář Form1.
  3. Přidejte odkaz do Knihovny objektů aplikace Microsoft Excel. Postupujte následujícím způsobem:
    1. V nabídce Projekt klepněte na příkaz Přidat odkaz.
    2. Na kartě COM vyhledejte možnost Knihovna objektů aplikace Microsoft Excel a klepněte na možnost Vybrat.

      Poznámka: Aplikace sady Microsoft Office 2003 zahrnuje primární definiční sestavení (PIA). Sada Microsoft Office XP nezahrnuje sestavení PIA, ale ty lze stáhnout. Další informace o sestaveních PIA sady Office XP naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
      328912 Primární sestavení InterOp (PIA) sady Office XP jsou k dispozici ke stažení
    3. Potvrďte výběr klepnutím na tlačítko OK v dialogovém okně Přidat odkazy. Pokud se zobrazí výzva ke generování obálky pro vybrané knihovny, klepněte na tlačítko Ano.
  4. V nabídce Zobrazit vyberte příkaz Sada nástrojů, zobrazí se sada nástrojů a pak přidejte tlačítko do formuláře Form1.
  5. Poklepejte na možnost Button1. Zobrazí se okno s kódem pro formulář.
  6. V okně s kódem nahraďte následující kód
    private void button1_Click(object sender, System.EventArgs e){}					
    tímto kódem:
    private void button1_Click(object sender, System.EventArgs e){	Excel.Application oXL;	Excel._Workbook oWB;	Excel._Worksheet oSheet;	Excel.Range oRng;	try	{		//Spustí aplikaci Excel a získá aplikaci jako objekt.		oXL = new Excel.Application();		oXL.Visible = true		//Načte nový sešit.		oWB = (Excel._Workbook)(oXL.Workbooks.Add( Missing.Value ));		oSheet = (Excel._Worksheet)oWB.ActiveSheet;		//Přidá záhlaví tabulky buňku po buňce.		oSheet.Cells[1, 1] = "Jméno";		oSheet.Cells[1, 2] = "Příjmení";		oSheet.Cells[1, 3] = "Celé jméno";		oSheet.Cells[1, 4] = "Plat";		//Formát A1:D1 tučně, svislé zarovnání na střed.		oSheet.get_Range("A1", "D1").Font.Bold = true;		oSheet.get_Range("A1", "D1").VerticalAlignment = 			Excel.XlVAlign.xlVAlignCenter;				// Vytvoří pole umožňující násobení hodnot najednou.		string[,] saNames = new string[5,2];				saNames[ 0, 0] = "Jan";		saNames[ 0, 1] = "Kovář";		saNames[ 1, 0] = "Tomáš";		saNames[ 1, 1] = "Bílý";		saNames[ 2, 0] = "Zuzana";		saNames[ 2, 1] = "Tománková";		saNames[ 3, 0] = "Jana";		saNames[ 3, 1] = "Jonášová";		saNames[ 4, 0] = "Adam";		saNames[ 4, 1] = "Janík";        	//Vyplní buňky A2:B6 polem hodnot (jména a příjmení).	        oSheet.get_Range("A2", "B6").Value2 = saNames;		//Vyplní buňky C2:C6 vzorcem s relativním odkazem (=A2 & " " & B2).		oRng = oSheet.get_Range("C2", "C6");		oRng.Formula = "=A2 & \" \" & B2";		//Vyplní buňky D2:D6 vzorcem (=RAND()*100000) a aplikuje formát buňky.		oRng = oSheet.get_Range("D2", "D6");		oRng.Formula = "=RAND()*100000";		oRng.NumberFormat = "$0.00";		//Automaticky přizpůsobí sloupce A:D.		oRng = oSheet.get_Range("A1", "D1");		oRng.EntireColumn.AutoFit();		//Zpracuje proměnlivý počet sloupců s údaji o čtvrtletním prodeji.		DisplayQuarterlySales(oSheet);		//Zajištění viditelnosti aplikace Excel a plné kontroly uživatelem		//po celou dobu funkčnosti aplikace Microsoft Excel.		oXL.Visible = true		oXL.UserControl = true	}	catch (Exception theException ) 	{		String errorMessage;		errorMessage = "Chyba: ";		errorMessage = String.Concat( errorMessage, theException.Message );		errorMessage = String.Concat( errorMessage, " Řádek: " );		errorMessage = String.Concat( errorMessage, theException.Source );		MessageBox.Show( errorMessage, "Chyba" );	}}private void DisplayQuarterlySales(Excel._Worksheet oWS){	Excel._Workbook oWB;	Excel.Series oSeries;	Excel.Range oResizeRange;	Excel._Chart oChart;	String sMsg;	int iNumQtrs;	//Určení pro kolik čtvrtletí se zobrazí data.	for( iNumQtrs = 4; iNumQtrs >= 2; iNumQtrs--)	{		sMsg = "Zadat data prodeje za ";		sMsg = String.Concat( sMsg, iNumQtrs );		sMsg = String.Concat( sMsg, " čtvrtletí?");		DialogResult iRet = MessageBox.Show( sMsg, "Čtvrtletní prodeje?", 			MessageBoxButtons.YesNo );		if (iRet == DialogResult.Yes)			break;	}	sMsg = "Zobrazení dat za ";	sMsg = String.Concat( sMsg, iNumQtrs );	sMsg = String.Concat( sMsg, " čtvrtletí." );	MessageBox.Show( sMsg, "Čtvrtletní prodeje" );	//Vyplnění záhlaví pro vybraný počet sloupců se začátkem v buňce E1.	oResizeRange = oWS.get_Range("E1", "E1").get_Resize( Missing.Value, iNumQtrs);	oResizeRange.Formula = "=\"Q\" & COLUMN()-4 & CHAR(10) & \"Sales\"";	//Změna vlastností orientace a obalení textu v záhlaví.	oResizeRange.Orientation = 38;	oResizeRange.WrapText = true;	//Vyplnění záhlaví barvou výplně.	oResizeRange.Interior.ColorIndex = 36;	//Vyplnění sloupců vzorcem a použití číselného formátu.	oResizeRange = oWS.get_Range("E2", "E6").get_Resize( Missing.Value, iNumQtrs);	oResizeRange.Formula = "=RAND()*100";	oResizeRange.NumberFormat = "$0.00";	//Nastavení okrajů pro data o prodeji a záhlaví.	oResizeRange = oWS.get_Range("E1", "E6").get_Resize( Missing.Value, iNumQtrs);	oResizeRange.Borders.Weight = Excel.XlBorderWeight.xlThin;	//Vložení vzorce pro výpočet celkového objemu prodeje a nastavení okraje.	oResizeRange = oWS.get_Range("E8", "E8").get_Resize( Missing.Value, iNumQtrs);	oResizeRange.Formula = "=SUM(E2:E6)";	oResizeRange.Borders.get_Item( Excel.XlBordersIndex.xlEdgeBottom ).LineStyle 		= Excel.XlLineStyle.xlDouble;	oResizeRange.Borders.get_Item( Excel.XlBordersIndex.xlEdgeBottom ).Weight 		= Excel.XlBorderWeight.xlThick;	//Vložení grafu pro vybraná data.	oWB = (Excel._Workbook)oWS.Parent;	oChart = (Excel._Chart)oWB.Charts.Add( Missing.Value, Missing.Value, 		Missing.Value, Missing.Value );	//Použití průvodce vytvářením grafů pro vytvoření nového grafu z vybraných dat.	oResizeRange = oWS.get_Range("E2:E6", Missing.Value ).get_Resize( 		Missing.Value, iNumQtrs);	oChart.ChartWizard( oResizeRange, Excel.XlChartType.xl3DColumn, Missing.Value,		Excel.XlRowCol.xlColumns, Missing.Value, Missing.Value, Missing.Value, 		Missing.Value, Missing.Value, Missing.Value, Missing.Value );	oSeries = (Excel.Series)oChart.SeriesCollection(1);	oSeries.XValues = oWS.get_Range("A2", "A6");	for( int iRet = 1; iRet <= iNumQtrs; iRet++)	{		oSeries = (Excel.Series)oChart.SeriesCollection(iRet);		String seriesName;		seriesName = "=\"Q";		seriesName = String.Concat( seriesName, iRet );		seriesName = String.Concat( seriesName, "\"" );		oSeries.Name = seriesName;	}														  		oChart.Location( Excel.XlChartLocation.xlLocationAsObject, oWS.Name );	//Posun grafu tak, aby nepřekrýval data.	oResizeRange = (Excel.Range)oWS.Rows.get_Item(10, Missing.Value );	oWS.Shapes.Item("Chart 1").Top = (float)(double)oResizeRange.Top;	oResizeRange = (Excel.Range)oWS.Columns.get_Item(2, Missing.Value );	oWS.Shapes.Item("Chart 1").Left = (float)(double)oResizeRange.Left;}					
  7. Přesun na začátek kódu. Přidejte následující řádek na konec seznamu direktiv using:
    using Excel = Microsoft.Office.Interop.Excel;using System.Reflection; 					

Testování klienta automatizace

  1. Chcete-li sestavit a spustit program, stiskněte klávesu F5.
  2. Na formuláři klepněte na tlačítko Button1. Program spustí aplikaci Excel a vyplní nový list daty.
  3. Až se zobrazí výzva k zadání dat o čtvrtletním objemu prodeje, klepněte na tlačítko Ano. Na list je přidán graf, který je propojen s údaji za čtvrtletí.
Odkazy
Další informace naleznete na následujících webech služby MSDN (Microsoft Developer Network):
Microsoft Office Development with Visual Studio
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx
automation automating automate xl2003
Vlastnosti

ID článku: 302084 - Poslední kontrola: 12/29/2007 13:57:04 - Revize: 7.3

Microsoft Visual C# .NET 2003 Standard Edition, Microsoft Visual C# .NET 2002 Standard Edition, Microsoft Office Excel 2003, Microsoft Excel 2002 Standard Edition

  • kbpia kbautomation kbhowto KB302084
Váš názor