Як автоматизувати Microsoft Word, щоб створити новий документ за допомогою Visual C#

Переклади статей Переклади статей
Номер статті: 316384 - Показ продуктів, яких стосується ця стаття.
За версією Microsoft Visual Basic .net цього стаття, перегляньте 316383.
За версією Microsoft Visual Basic 6.0 цього стаття, перегляньте 313193.
Розгорнути все | Згорнути все

ПІДСУМКИ

У цій статті описано, як створити новий документ у Microsoft Word за допомогою автоматизації від Microsoft Visual C# 2005 або Microsoft Visual C# .net.

Приклади коду

Приклади коду в цій статті демонструє, як зробити на наступні:
  • Вставлення пунктів з тексту й форматування.
  • Перегляд і змінення різних діапазонів в рамках документ.
  • Вставити таблиці, форматування таблиць і заповнення таблиць з дані.
  • запит на додавання діаграми.
Щоб створити новий документ Word за допомогою автоматизації з Visual C# 2005 або Visual C# .net, виконайте такі дії:
  1. Запустити Microsoft Visual Studio 2005 або Microsoft Visual Studio .net.
  2. На що Файл меню, натисніть Новіа потім натисніть кнопку Проект. У розділі Типи проекту, натисніть кнопку Visual C# проектиа потім натисніть кнопку Застосунок Windows у розділі Шаблони. Форма Form1 створюється за промовчанням.

    Примітка В Visual Studio 2005 натисніть кнопку Visual C# Замість цього з Visual C# проекти.
  3. Додати посилання Бібліотека об'єктів Microsoft Word. Для цього виконайте такі дії:
    1. На що Проект меню, натисніть Додати посилання.
    2. На що КОМ Закладка, знайдіть Microsoft Word Бібліотека об'єктіва потім натисніть кнопку Виберіть.

      Примітка В Visual Studio 2005 ви не повинні натиснути Виберіть.
      Примітка Microsoft Office 2003 містить базовий комплект засобів (PIAs). Microsoft Office XP містить не PIAs, але вони можуть бути завантажені. Щоб отримати додаткові відомості про Office XP PIAs клацніть номер статті для перегляду статті в базі знань Microsoft Knowledge Base:
      328912ІНФОРМАЦІЯ: Microsoft Office XP PIAs доступні для завантаження
    3. Натисніть кнопку Гаразд у регіоні Додати посилання діалоговому вікні, щоб приймати ваші вибірки. Якщо потрібно генерувати обгортки для бібліотек, які вибрано, натисніть кнопку Так.
  4. На що подання елементів меню, виберіть Палітри інструментів Відображення панелі інструментів, а потім додати кнопку, щоб Форма Form1.
  5. Двічі клацніть Button1. Відображається вікно код» для форми.
  6. У вікні замінити наступний код
    private void button1_Click(object sender, System.EventArgs e)
    {
    }
    					
    з:
    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. Прокрутка на початок вікна вихідного коду. Додати наступні рядок в кінець списку за допомогою Директиви:
    using Word = Microsoft.Office.Interop.Word;
    using System.Reflection;
    					
  8. Натисніть клавішу F5, щоб побудувати і запустити програму.
  9. Натисніть кнопку Button1 Щоб запустити Word автоматизації та створити документ.
Після завершення код перевірити документ, який був створений Для тебе. Документ містить дві сторінки, форматування абзаців, таблиці і на діаграми.

сценарій виконання шаблону

Якщо ви використовуєте автоматизації для створення документів, які знаходяться в на загальний формат, ви можете скористатися перевагою запуску процесу створення нового документа на засадах форматованих шаблон. сценарій виконання шаблонів з вашого слово Автоматизація клієнт має дві значні переваги в порівнянні з створення документа з нічого:
  • Ви можете мати більше контролю над форматуванням і розміщення об'єктів по всій ваші документи.
  • Ви можете побудувати ваші документи з менше коду.
За допомогою шаблона, можна точно настроїти розміщення таблиці, абзаци та інших об'єктів у межах документа, а також включати форматування на об'єкти. За допомогою автоматизації, ви можете створити новий документ на основі шаблону з кодом, такими як наступні:
object oTemplate = "c:\\MyTemplate.dot";
oDoc = oWord.Documents.Add(ref oTemplate, ref oMissing,
	ref oMissing, ref oMissing);
				
У шаблоні, ви можете визначити закладки, щоб ваш автоматизації клієнт може заповнити змінюваний текст на певне місце в документі, як наступним чином:
object oBookMark = "MyBookmark";
oDoc.Bookmarks.Item(ref oBookMark).Range.Text = "Some Text Here";
				
Інша перевага сценарій виконання шаблону, можна створювати та зберігати форматування стилі, які ви хочете застосувати під Вільний час виконання, наступним чином:
object oStyleName = "MyStyle";
oDoc.Bookmarks.Item(ref oBookMark).Range.set_Style(ref oStyleName);
				
- або -
object oStyleName = "MyStyle";
oWord.Selection.set_Style(ref oStyleName);
				

ПОСИЛАННЯ

Щоб отримати додаткові відомості клацніть номери для Перегляд статей у базі знань Microsoft Knowledge Base:
301659HOWTO: Автоматизувати Microsoft Word для виконання злиття з Visual C# .net
302902 HOWTO: Прив'язування для автоматизації серверів Office з Visual C# .net
Для отримання додаткової інформації відвідайте наступні Microsoft Розробник глобальна мережа (MSDN) веб-сайти:
Microsoft Office розвитку з Visual Studio
ASPX http://msdn2.Microsoft.com/EN-US/Library/aa188489 (office.10)

Слово в офісі (MSDN онлайн статті)
ASPX http://msdn2.Microsoft.com/EN-US/Library/aa201330 (office.11)

Одне слово більше (MSDN онлайн статті)
ASPX http://msdn2.Microsoft.com/EN-US/Library/aa201332 (office.11)

Властивості

Номер статті: 316384 - Востаннє переглянуто: 6 липня 2012 р. - Редакція: 2.0
ЗАСТОСОВУЄТЬСЯ ДО:
  • Microsoft Visual C# 2005 Express Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Word 2002 - стандартний випуск
Ключові слова: 
kbautomation kbhowtomaster kbmt KB316384 KbMtuk
Машинний переклад
УВАГА! Цю статтю переклала програма машинного перекладу Microsoft, а не людина. Корпорація Microsoft пропонує вам як машинні переклади, так і переклади фахівців, щоб Ви мали доступ до всіх статей бази знань рідною мовою. Проте стаття, яку переклав комп’ютер, не завжди бездоганна. Вона може містити лексичні, синтаксичні або граматичні помилки. Так само помиляється іноземець, спілкуючись вашою рідною мовою. Корпорація Microsoft не несе відповідальність за жодні неточності, помилки або шкоду, завдану неправильним перекладом змісту або його використанням з боку користувачів. Крім того, корпорація Microsoft часто оновлює програму машинного перекладу.
Клацніть тут, щоб переглянути цю статтю англійською мовою: 316384

Надіслати відгук

 

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