Jak automatizovat aplikaci Microsoft Word k vytvoření nového dokumentu pomocí aplikace Visual C#

Překlady článku Překlady článku
ID článku: 316384 - Produkty, které se vztahují k tomuto článku.
Pro Microsoft Visual Basic.NET verze tohoto článek naleznete v tématu 316383.
Tato verze aplikace Microsoft Visual Basic 6.0 článek naleznete v tématu 313193.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Souhrn

Tento podrobný článek popisuje, jak vytvořit nový dokument v aplikaci Microsoft Word pomocí automatizace z jazyka Microsoft Visual C# 2005 nebo Microsoft Visual C#.NET.

Ukázkový kód

Ukázkový kód v tomto článku demonstruje, jak následující:
  • Vložte text a formátování odstavců.
  • Procházení a úpravám různých oblastí v rámci dokument.
  • Vkládat tabulky, formátování tabulek a naplnění tabulky s data.
  • Přidáte do grafu.
Vytvoření nového dokumentu aplikace Word pomocí automatizace z Visual C# 2005 nebo Visual C#.NET, postupujte takto:
  1. Spusťte aplikaci Microsoft Visual Studio 2005 nebo Microsoft Visual Studio.NET.
  2. V Soubor nabídky, klepněte na tlačítko Novýa klepněte na tlačítko Projekt. Ve skupinovém rámečku Typy projektů, klepněte na tlačítko Visual C# projektya klepněte na tlačítko Aplikace systému Windows ve skupinovém rámečku Šablony. Ve výchozím nastavení je vytvořen formulář Form1.

    Poznámka: V aplikaci Visual Studio 2005 klepněte na tlačítko Visual C# místo z Visual C# projekty.
  3. Přidat odkaz na Knihovna objektů Microsoft Word. Chcete-li to provést, postupujte takto:
    1. V Projekt nabídky, klepněte na tlačítko Přidat odkaz.
    2. V COM karta, vyhledejte Microsoft Word Knihovna objektůa klepněte na tlačítko Vybrat.

      Poznámka: V aplikaci Visual Studio 2005 nemáte na Vybrat.
      Poznámka: Microsoft Office 2003 zahrnuje primární sestavení Interop (PIA). Microsoft Office XP nezahrnuje sestavení PIA, ale mohou být staženy. Další informace o sestaveních PIA sady Office XP získáte klepnutím na následující číslo článku zobrazení článku znalostní báze Microsoft Knowledge Base:
      328912INFO: Sestaveních PIA sady Microsoft Office XP jsou k dispozici ke stažení
    3. Klepněte na tlačítko OK v Přidat odkazy Dialogové okno potvrďte výběr. Pokud se zobrazí výzva generování obálky pro vybrané knihovny, klepněte na tlačítko Ano.
  4. V Zobrazení nabídka select Panel nástrojů zobrazení panelu a potom přidat tlačítko Formulář1.
  5. Poklepejte na položku Button1. Zobrazí se okno kód pro formulář.
  6. V okně kódu nahraďte následující kód
    private void button1_Click(object sender, System.EventArgs e)
    {
    }
    					
    s:
    private void button1_Click(object sender, System.EventArgs e)
    {
    	object oMissing = System.Reflection.Missing.Value;
    	object oEndOfDoc = "\\endofdoc"; /* \endofdoc is a predefined bookmark */ 
    
    	//Start Word and create a new document.
    	Word._Application oWord;
    	Word._Document oDoc;
    	oWord = new Word.Application();
    	oWord.Visible = true;
    	oDoc = oWord.Documents.Add(ref oMissing, ref oMissing,
    		ref oMissing, ref oMissing);
    
    	//Insert a paragraph at the beginning of the document.
    	Word.Paragraph oPara1;
    	oPara1 = oDoc.Content.Paragraphs.Add(ref oMissing);
    	oPara1.Range.Text = "Heading 1";
    	oPara1.Range.Font.Bold = 1;
    	oPara1.Format.SpaceAfter = 24;    //24 pt spacing after paragraph.
    	oPara1.Range.InsertParagraphAfter();
    
    	//Insert a paragraph at the end of the document.
    	Word.Paragraph oPara2;
    	object oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    	oPara2 = oDoc.Content.Paragraphs.Add(ref oRng);
    	oPara2.Range.Text = "Heading 2";
    	oPara2.Format.SpaceAfter = 6;
    	oPara2.Range.InsertParagraphAfter();
    
    	//Insert another paragraph.
    	Word.Paragraph oPara3;
    	oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    	oPara3 = oDoc.Content.Paragraphs.Add(ref oRng);
    	oPara3.Range.Text = "This is a sentence of normal text. Now here is a table:";
    	oPara3.Range.Font.Bold = 0;
    	oPara3.Format.SpaceAfter = 24;
    	oPara3.Range.InsertParagraphAfter();
    
    	//Insert a 3 x 5 table, fill it with data, and make the first row
    	//bold and italic.
    	Word.Table oTable;
    	Word.Range wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    	oTable = oDoc.Tables.Add(wrdRng, 3, 5, ref oMissing, ref oMissing);
    	oTable.Range.ParagraphFormat.SpaceAfter = 6;
    	int r, c;
    	string strText;
    	for(r = 1; r <= 3; r++)
    		for(c = 1; c <= 5; c++)
    		{
    			strText = "r" + r + "c" + c;
    			oTable.Cell(r, c).Range.Text = strText;
    		}
    	oTable.Rows[1].Range.Font.Bold = 1;
    	oTable.Rows[1].Range.Font.Italic = 1;
    
    	//Add some text after the table.
    	Word.Paragraph oPara4;
    	oRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    	oPara4 = oDoc.Content.Paragraphs.Add(ref oRng);
    	oPara4.Range.InsertParagraphBefore();
    	oPara4.Range.Text = "And here's another table:";
    	oPara4.Format.SpaceAfter = 24;
    	oPara4.Range.InsertParagraphAfter();
    
    	//Insert a 5 x 2 table, fill it with data, and change the column widths.
    	wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    	oTable = oDoc.Tables.Add(wrdRng, 5, 2, ref oMissing, ref oMissing);
    	oTable.Range.ParagraphFormat.SpaceAfter = 6;
    	for(r = 1; r <= 5; r++)
    		for(c = 1; c <= 2; c++)
    		{
    			strText = "r" + r + "c" + c;
    			oTable.Cell(r, c).Range.Text = strText;
    		}
    	oTable.Columns[1].Width = oWord.InchesToPoints(2); //Change width of columns 1 & 2
    	oTable.Columns[2].Width = oWord.InchesToPoints(3);
    
    	//Keep inserting text. When you get to 7 inches from top of the
    	//document, insert a hard page break.
    	object oPos;
    	double dPos = oWord.InchesToPoints(7);
    	oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range.InsertParagraphAfter();
    	do
    	{
    		wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    		wrdRng.ParagraphFormat.SpaceAfter = 6;
    		wrdRng.InsertAfter("A line of text");
    		wrdRng.InsertParagraphAfter();
    		oPos = wrdRng.get_Information
                           (Word.WdInformation.wdVerticalPositionRelativeToPage);
    	}
    	while(dPos >= Convert.ToDouble(oPos));
    	object oCollapseEnd = Word.WdCollapseDirection.wdCollapseEnd;
    	object oPageBreak = Word.WdBreakType.wdPageBreak;
    	wrdRng.Collapse(ref oCollapseEnd);
    	wrdRng.InsertBreak(ref oPageBreak);
    	wrdRng.Collapse(ref oCollapseEnd);
    	wrdRng.InsertAfter("We're now on page 2. Here's my chart:");
    	wrdRng.InsertParagraphAfter();
    
    	//Insert a chart.
    	Word.InlineShape oShape;
    	object oClassType = "MSGraph.Chart.8";
    	wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    	oShape = wrdRng.InlineShapes.AddOLEObject(ref oClassType, ref oMissing, 
    		ref oMissing, ref oMissing, ref oMissing,
    		ref oMissing, ref oMissing, ref oMissing);
    
    	//Demonstrate use of late bound oChart and oChartApp objects to
    	//manipulate the chart object with MSGraph.
    	object oChart;
    	object oChartApp;
    	oChart = oShape.OLEFormat.Object;
    	oChartApp = oChart.GetType().InvokeMember("Application",
    		BindingFlags.GetProperty, null, oChart, null);
    
    	//Change the chart type to Line.
    	object[] Parameters = new Object[1];
    	Parameters[0] = 4; //xlLine = 4
    	oChart.GetType().InvokeMember("ChartType", BindingFlags.SetProperty,
    		null, oChart, Parameters);
    
    	//Update the chart image and quit MSGraph.
    	oChartApp.GetType().InvokeMember("Update",
    		BindingFlags.InvokeMethod, null, oChartApp, null);
    	oChartApp.GetType().InvokeMember("Quit",
    		BindingFlags.InvokeMethod, null, oChartApp, null);
    	//... If desired, you can proceed from here using the Microsoft Graph 
    	//Object model on the oChart and oChartApp objects to make additional
    	//changes to the chart.
    
    	//Set the width of the chart.
    	oShape.Width = oWord.InchesToPoints(6.25f);
    	oShape.Height = oWord.InchesToPoints(3.57f);
    
    	//Add text after the chart.
    	wrdRng = oDoc.Bookmarks.get_Item(ref oEndOfDoc).Range;
    	wrdRng.InsertParagraphAfter();
    	wrdRng.InsertAfter("THE END.");
    
    	//Close this form.
    	this.Close();
    }
    					
  7. Posun na začátek okna kódu. Přidejte následující řádek na konec seznamu použití směrnic:
    using Word = Microsoft.Office.Interop.Word;
    using System.Reflection;
    					
  8. Stisknutím klávesy F5 sestavit a spustit program.
  9. Klepněte na tlačítko Button1 Spusťte aplikaci Word automatizace a vytvoření dokumentu.
Po dokončení kód prozkoumejte dokument, který byl vytvořen pro vás. Dokument obsahuje dvě stránky formátované odstavce, tabulky a graf.

Použít šablonu

Pokud používáte k vytváření dokumentů, které jsou v automatizaci společný formát, můžete využít výhod spuštění procesu s novým dokumentem který je založen na předdefinované šabloně. Pomocí šablony aplikace Word Automatizace klient má dva významné výhody vytváření dokumentu z nic:
  • Máte větší kontrolu nad formátování a umístění objektů v celém dokumentu.
  • Můžete vytvářet dokumenty s méně kódu.
Pomocí šablony můžete doladit umístění tabulky odstavců a jiných objektů v dokumentu, včetně formátování na tyto objekty. Pomocí funkce automatizace, můžete vytvořit nový dokument založené na šabloně s kódem, jako například:
object oTemplate = "c:\\MyTemplate.dot";
oDoc = oWord.Documents.Add(ref oTemplate, ref oMissing,
	ref oMissing, ref oMissing);
				
V šabloně, můžete definovat záložky tak, aby vaše automatizace Klient může vyplňte text proměnné na určité místo v dokumentu, takto:
object oBookMark = "MyBookmark";
oDoc.Bookmarks.Item(ref oBookMark).Range.Text = "Some Text Here";
				
Pomocí šablony jinou výhodou je, že můžete vytvořit a uložit formátování stylů, které chcete použít při běhu, takto:
object oStyleName = "MyStyle";
oDoc.Bookmarks.Item(ref oBookMark).Range.set_Style(ref oStyleName);
				
- nebo -
object oStyleName = "MyStyle";
oWord.Selection.set_Style(ref oStyleName);
				

Odkazy

Další informace získáte následujících článcích zobrazte články znalostní báze Microsoft Knowledge Base:
301659POSTUPY: Automatizace aplikace Microsoft Word pro hromadnou korespondenci v aplikaci Visual C#.NET
302902 POSTUPY: Vazba pro automatizační servery Office pomocí aplikace Visual C#.NET
Další informace naleznete na následující společnosti Microsoft Webech Developer Network (MSDN):
Vývoj sady Microsoft Office s aplikací Visual Studio
http://msdn2.microsoft.com/en-us/library/aa188489 (office.10) .aspx

Aplikace Word v sadě Office (MSDN Online v článku)
http://msdn2.microsoft.com/en-us/library/aa201330 (office.11) .aspx

Jedno další slovo (MSDN Online v článku)
http://msdn2.microsoft.com/en-us/library/aa201332 (office.11) .aspx

Vlastnosti

ID článku: 316384 - Poslední aktualizace: 19. května 2011 - Revize: 9.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Visual C# 2005 Express Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Word 2002 Standard Edition
Klíčová slova: 
kbautomation kbhowtomaster kbmt KB316384 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:316384

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com