Ako na automatizáciu Microsoft Excel z Microsoft Visual C#.NET

ID článku: 302084 - Zobraziť produkty, ktorých sa tento článok týka.
Rozbaliť všetko | Zbaliť všetko

SUHRN

Tento článok ukazuje ako vytvoriť automatizácie klient pre program Microsoft Excel pomocou Microsoft Visual C#.NET.

DALSIE INFORMACIE

Automatizácia je proces, ktorý umožňuje aplikácií, ktoré sú napísané v jazykoch ako napríklad Visual C#.NET programovo ovládať iné aplikácie. Automatizácia Excel umožňuje vykonávať akcie ako vytvoriť nový zošit, pridanie údajov do zošita alebo vytváranie grafov. S Excel a ďalších aplikáciách balíka Microsoft Office, prakticky všetky akcie že môžete vykonať manuálne pomocou používateľského rozhrania môže uskutočniť aj pomocou programovania pomocou automatizácie.

Program Excel vystavuje tomto programové funkčnosť prostredníctvom objektového modelu. Objektový model je kolekcia tried a metód, ktoré slúžia ako náprotivkami logické komponentov Excel. Napríklad, existuje Uplatňovanie objekt, Zošit objekt, a Funkcia pracovného hárka objekt, z ktorých každý obsahovať funkčnosť tieto kusy programu Excel. Prístup k objektovému modelu z Visual C#.NET, môžete nastaviť projektu odkaz na knižnice typov.

Tento článok ukazuje ako nastaviť riadne projektu odkaz na program Excel typ knižnice pre Visual C#.NET a poskytuje vzorky kód na automatizáciu programu Excel.

Vytvoriť automatizačných klientov programu Microsoft Excel

  1. Spustiť Microsoft Visual Studio.NET.
  2. Na Súbor ponuky, kliknite na tlačidlo Nové, a potom kliknite na tlačidlo Projekt. Vyberte Windows aplikácie z typov Visual C# projektu. Form1 sa vytvorí na základe predvoleného nastavenia.
  3. Pridať odkaz na Objektová knižnica programu Microsoft Excel. Chcete urobiť, postupujte nasledovne:
    1. Na Projekt ponuky, kliknite na tlačidlo Pridať odkaz.
    2. Na COM kartu, vyhľadajte Programu Microsoft Excel Objektová knižnica, a kliknite na tlačidlo Vyberte.

      Poznámka Microsoft Office 2003 obsahuje Primary Interop Assemblies (PIA). Microsoft Office XP neobsahuje Pia, ale môžu byť stiahnuté.Ďalšie informácie o Office XP Pia, po kliknutí na nasledovné číslo článku databázy Microsoft Knowledge Base:
      328912Microsoft Office XP primary objektovému assemblies (PIA) sú k dispozícii na prevzatie
    3. Kliknite na tlačidlo ok v Pridať odkazy dialógové okno prijímať vaše výbery. Ak sa zobrazí výzva na generovať medzivrstva pre knižnice, ktorý ste vybrali, kliknite na tlačidlo áno.
  4. Na Zobrazenie menu vyberte Toolbox zobrazenie panela s nástrojmi a potom pridať tlačidlo, na Form1.
  5. Dvakrát kliknite na Button1. Zobrazí sa okno kód pre formulár.
  6. V okne kód nahradiť nasledujúci kód
    private void button1_Click(object sender, System.EventArgs e)
    {
    }
    					
    s:
    private void button1_Click(object sender, System.EventArgs e)
    {
    	Excel.Application oXL;
    	Excel._Workbook oWB;
    	Excel._Worksheet oSheet;
    	Excel.Range oRng;
    
    	try
    	{
    		//Start Excel and get Application object.
    		oXL = new Excel.Application();
    		oXL.Visible = true;
    
    		//Get a new workbook.
    		oWB = (Excel._Workbook)(oXL.Workbooks.Add( Missing.Value ));
    		oSheet = (Excel._Worksheet)oWB.ActiveSheet;
    
    		//Add table headers going cell by cell.
    		oSheet.Cells[1, 1] = "First Name";
    		oSheet.Cells[1, 2] = "Last Name";
    		oSheet.Cells[1, 3] = "Full Name";
    		oSheet.Cells[1, 4] = "Salary";
    
    		//Format A1:D1 as bold, vertical alignment = center.
    		oSheet.get_Range("A1", "D1").Font.Bold = true;
    		oSheet.get_Range("A1", "D1").VerticalAlignment = 
    			Excel.XlVAlign.xlVAlignCenter;
    		
    		// Create an array to multiple values at once.
    		string[,] saNames = new string[5,2];
    		
    		saNames[ 0, 0] = "John";
    		saNames[ 0, 1] = "Smith";
    		saNames[ 1, 0] = "Tom";
    		saNames[ 1, 1] = "Brown";
    		saNames[ 2, 0] = "Sue";
    		saNames[ 2, 1] = "Thomas";
    		saNames[ 3, 0] = "Jane";
    		saNames[ 3, 1] = "Jones";
    		saNames[ 4, 0] = "Adam";
    		saNames[ 4, 1] = "Johnson";
    
            	//Fill A2:B6 with an array of values (First and Last Names).
    	        oSheet.get_Range("A2", "B6").Value2 = saNames;
    
    		//Fill C2:C6 with a relative formula (=A2 & " " & B2).
    		oRng = oSheet.get_Range("C2", "C6");
    		oRng.Formula = "=A2 & \" \" & B2";
    
    		//Fill D2:D6 with a formula(=RAND()*100000) and apply format.
    		oRng = oSheet.get_Range("D2", "D6");
    		oRng.Formula = "=RAND()*100000";
    		oRng.NumberFormat = "$0.00";
    
    		//AutoFit columns A:D.
    		oRng = oSheet.get_Range("A1", "D1");
    		oRng.EntireColumn.AutoFit();
    
    		//Manipulate a variable number of columns for Quarterly Sales Data.
    		DisplayQuarterlySales(oSheet);
    
    		//Make sure Excel is visible and give the user control
    		//of Microsoft Excel's lifetime.
    		oXL.Visible = true;
    		oXL.UserControl = true;
    	}
    	catch( Exception theException ) 
    	{
    		String errorMessage;
    		errorMessage = "Error: ";
    		errorMessage = String.Concat( errorMessage, theException.Message );
    		errorMessage = String.Concat( errorMessage, " Line: " );
    		errorMessage = String.Concat( errorMessage, theException.Source );
    
    		MessageBox.Show( errorMessage, "Error" );
    	}
    }
    
    private void DisplayQuarterlySales(Excel._Worksheet oWS)
    {
    	Excel._Workbook oWB;
    	Excel.Series oSeries;
    	Excel.Range oResizeRange;
    	Excel._Chart oChart;
    	String sMsg;
    	int iNumQtrs;
    
    	//Determine how many quarters to display data for.
    	for( iNumQtrs = 4; iNumQtrs >= 2; iNumQtrs--)
    	{
    		sMsg = "Enter sales data for ";
    		sMsg = String.Concat( sMsg, iNumQtrs );
    		sMsg = String.Concat( sMsg, " quarter(s)?");
    
    		DialogResult iRet = MessageBox.Show( sMsg, "Quarterly Sales?", 
    			MessageBoxButtons.YesNo );
    		if (iRet == DialogResult.Yes)
    			break;
    	}
    
    	sMsg = "Displaying data for ";
    	sMsg = String.Concat( sMsg, iNumQtrs );
    	sMsg = String.Concat( sMsg, " quarter(s)." );
    
    	MessageBox.Show( sMsg, "Quarterly Sales" );
    
    	//Starting at E1, fill headers for the number of columns selected.
    	oResizeRange = oWS.get_Range("E1", "E1").get_Resize( Missing.Value, iNumQtrs);
    	oResizeRange.Formula = "=\"Q\" & COLUMN()-4 & CHAR(10) & \"Sales\"";
    
    	//Change the Orientation and WrapText properties for the headers.
    	oResizeRange.Orientation = 38;
    	oResizeRange.WrapText = true;
    
    	//Fill the interior color of the headers.
    	oResizeRange.Interior.ColorIndex = 36;
    
    	//Fill the columns with a formula and apply a number format.
    	oResizeRange = oWS.get_Range("E2", "E6").get_Resize( Missing.Value, iNumQtrs);
    	oResizeRange.Formula = "=RAND()*100";
    	oResizeRange.NumberFormat = "$0.00";
    
    	//Apply borders to the Sales data and headers.
    	oResizeRange = oWS.get_Range("E1", "E6").get_Resize( Missing.Value, iNumQtrs);
    	oResizeRange.Borders.Weight = Excel.XlBorderWeight.xlThin;
    
    	//Add a Totals formula for the sales data and apply a border.
    	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;
    
    	//Add a Chart for the selected data.
    	oWB = (Excel._Workbook)oWS.Parent;
    	oChart = (Excel._Chart)oWB.Charts.Add( Missing.Value, Missing.Value, 
    		Missing.Value, Missing.Value );
    
    	//Use the ChartWizard to create a new chart from the selected data.
    	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 );
    
    	//Move the chart so as not to cover your 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. Prejdite na hornej časti okna pre kód. Doplní sa nasledujúce riadok na koniec zoznamu pomocou smerníc:
    using Excel = Microsoft.Office.Interop.Excel;
    using System.Reflection; 
    					

Test automatizačných klientov

  1. Stlačte kláves F5 stavať a spustite program.
  2. Kliknite na tlačidlo Button1 vo formulári. Program spustí program Excel a vyplní údaje na novom Funkcia pracovného hárka.
  3. Keď sa zobrazí výzva na zadanie štvrťročných údajov o predaji, kliknite na tlačidlo áno. Graf, ktorý je prepojený s štvrťročných údajov sa pridá do Funkcia pracovného hárka.

ODKAZY

Pre viac informácií navštívte nasledujúce Microsoft Developer Webová lokalita spoločnosti Network (MSDN):
Microsoft Office rozvoja s Visual Studio
http://msdn2.Microsoft.com/en-us/library/aa188489.aspx

Vlastnosti

ID článku: 302084 - Posledná kontrola: 31. októbra 2011 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Excel 2002 Standard Edition
Kľúčové slová: 
kbpia kbautomation kbhowto kbmt KB302084 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:302084

Odošlite odozvu