Автоматизация Microsoft Word, чтобы создать новый документ с помощью C#

Переводы статьи Переводы статьи
Код статьи: 316384 - Vizualiza?i produsele pentru care se aplic? acest articol.
Для версии Microsoft Visual Basic .NET в данной статье см. 316383.
Для версии Microsoft Visual Basic 6.0 в данной статье см. 313193.
Развернуть все | Свернуть все

Аннотация

В данной статье описывается создание нового документа в Microsoft Word с помощью Microsoft Visual C# 2005 или Microsoft Visual C# .NET.

Пример кода

Пример кода в этой статье показывает, как сделать следующее:
  • Вставка абзацев с текстом и форматированием.
  • Просмотр и Модификация диапазонов в adocument.
  • Вставка таблиц, форматирование таблицы и заполнения таблицы withdata.
  • Добавление диаграммы.
Чтобы создать новый документ Word с помощью Visual C# 2005 или Visual C# .NET, выполните следующие действия.
  1. Запустите Microsoft Visual Studio 2005 или Microsoft VisualStudio .NET.
  2. На Файл меню, нажмите кнопку Новый, а затем нажмите кнопку Проект. В разделе Типы проектов, нажмите кнопку C# проекты, а затем нажмите кнопку Приложения Windows в разделе Шаблоны. По умолчанию будет создана форма Form1.

    Примечание В Visual Studio 2005 выберите Проекты Visual C#, C# insteadof.
  3. Добавить ссылку Библиотека объектов Microsoft Word. Чтобы сделать это, выполните следующие действия.
    1. На Проект меню, нажмите кнопку Добавить ссылку.
    2. На COM вкладке, найдите Библиотека объектов Microsoft Word, а затем нажмите кнопку Select.

      Примечание В Visual Studio 2005 выберитенет.
      Примечание Microsoft Office 2003 входят основные сборки взаимодействия (PIA). Основные сборки взаимодействия для Microsoft Office XP отсутствует, но они могут быть загружены. Дополнительные сведения об основных сборках взаимодействия Office XP щелкните следующий вид преобразуемое число статьи статьи базы знаний Майкрософт:
      328912 ИНФОРМАЦИЯ: Основные сборки взаимодействия для Microsoft Office XP доступны для загрузки
    3. Нажмите кнопку ОК в Добавление ссылок диалоговое окно для подтверждения сделанного. Если запрос на создание оберток для выбранных библиотек, нажмите кнопку Да.
  4. На Просмотр Выберите пункт Панели инструментов Чтобы отобразить панель инструментов, а затем добавьте toForm1 кнопки.
  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. Прокрутка до верхней части окна кода. Добавить followingline в конец списка с помощью директивы:
    using Word = Microsoft.Office.Interop.Word;
    using System.Reflection;
    					
  8. Нажмите клавишу F5 для построения и запуска программы.
  9. Нажмите кнопку Button1 для запуска автоматизации Word и создать документ.
После завершения кода, просмотрите документ, который был создан для вас. Документ содержит две страницы отформатированные абзацы, таблицы и диаграммы.

Использование шаблона

При использовании автоматизации для создания документов, которые находятся в общем формате, можно воспользоваться преимуществом начиная с нового документа, основанного на предварительно отформатированного шаблона процесса. Клиент автоматизации Word при помощи шаблона имеет два существенных преимущества над созданием документа с нуля:
  • Может иметь больший контроль над форматирования andplacement объектов в документе.
  • Можно создавать документы с меньшим объемом кода.
С помощью шаблона можно точнее настроить положения таблиц, абзацев и других объектов в документе, а также включать форматирование для этих объектов. С помощью автоматизации, можно создать новый документ на основе шаблона с следующий код:
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);
				

Ссылки

Для получения дополнительных сведений щелкните следующие номера статей базы знаний Майкрософт:
301659 Методические УКАЗАНИЯ: Автоматизация Microsoft Word для выполнения слияния с C# .NET
302902 Методические УКАЗАНИЯ: Привязка для серверов автоматизации Office с помощью Visual C# .NET
Для получения дополнительных сведений посетите следующие веб-сайты Microsoft Developer Network (MSDN):
Использование Visual Studio для программирования Microsoft Office
http://msdn2.Microsoft.com/en-us/library/aa188489 (office.10).aspx

Слова в Office (статье MSDN Online)
http://msdn2.Microsoft.com/en-us/library/aa201330 (office.11).aspx

Дополнительно о приложении Word (статье MSDN Online)
http://msdn2.Microsoft.com/en-us/library/aa201332 (office.11).aspx

Свойства

Код статьи: 316384 - Последний отзыв: 3 мая 2014 г. - Revision: 11.0
Информация в данной статье относится к следующим продуктам.
  • 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
Ключевые слова: 
kbautomation kbhowtomaster kbmt KB316384 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Данная статья переведена с использованием программного обеспечения Майкрософт для машинного перевода и, возможно, отредактирована посредством технологии Community Translation Framework (CTF). Корпорация Майкрософт предлагает вам статьи, обработанные средствами машинного перевода, отредактированные членами сообщества Майкрософт и переведенные профессиональными переводчиками, чтобы вы могли ознакомиться со всеми статьями нашей базы знаний на нескольких языках. Статьи, переведенные с использованием средств машинного перевода и отредактированные сообществом, могут содержать смысловое, синтаксические и (или) грамматические ошибки. Корпорация Майкрософт не несет ответственности за любые неточности, ошибки или ущерб, вызванные неправильным переводом контента или его использованием нашими клиентами. Подробнее об CTF можно узнать по адресу http://support.microsoft.com/gp/machine-translation-corrections/ru.
Эта статья на английском языке: 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