Автоматизация Microsoft Word для создания нового документа с помощью Visual C#Версия данной статьи для Microsoft Visual Basic .NET: 316383
(http://support.microsoft.com/kb/316383/
)
. Версия данной статьи для Microsoft Visual Basic 6.0: 313193
(http://support.microsoft.com/kb/313193/
)
. В данном пошаговом руководстве описывается создание нового документа в Microsoft Word с помощью Microsoft Visual C# 2005 или Microsoft Visual C# .NET. Пример программыОбразец кода в этой статье показано, как сделать следующее: - Вставка абзацев с определенными параметрами форматирования..
- Модификация диапазонов в рамках документа..
- Вставка, форматирование и заполнение таблиц..
- Добавление диаграммы..
Чтобы создать новый документ Word с помощью Visual C# 2005 или Visual C# .NET, выполните следующие действия. - Запустите Microsoft Visual Studio 2005 или Microsoft Visual Studio .NET.
- в менюФайл:выберите пунктСОЗДАТЬ.и выберите командуProject. Из спискаТипы проектовзатем –Проекты Visual C#и выберите командуПриложения WindowsИз спискаШаблоны:. По умолчанию будет создана форма Form1..
Примечание.В Visual Studio 2005 щелкнитеВ Visual C#ВместоПроекты Visual C#. - Добавьте ссылку наБиблиотека объектов Microsoft Word. Выполните следующие действия::
- в менюProjectвыберите пунктДобавление ссылки.
- в менюCOMвкладки, найдитеMicrosoft Word Библиотека объектови выберите командуSelect.
Примечание.В Visual Studio 2005 не нужно нажмите кнопкуSelect. Примечание.Microsoft Office 2003 входят основные сборки взаимодействия (PIA).
Microsoft Office XP не включает эти сборки, но их можно загрузить..Для получения дополнительных сведений об основных сборок взаимодействия Office XP щелкните следующий номер статьи базы знаний Майкрософт:328912
(http://support.microsoft.com/kb/328912/
)
ИНФОРМАЦИЯ: Основных сборок взаимодействия Microsoft Office XP доступны для загрузки - затем –Ok.В диалоговом окнеДобавление ссылкидиалоговое окно для подтверждения сделанного. Если запрос на создание оберток для выбранных библиотек, нажмите кнопкуДА..
- в менюПредставление:меню выбораПанель инструментовЧтобы отобразить панель инструментов и добавьте кнопку в форму Form1.
- Двойной щелчокButton1. Появится окно программного кода формы..
- В коне кода замените также следующий код:
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();
}
- Перейдите в начало окна кода.. Добавьте следующую строку в конец спискас помощьюдирективы:
using Word = Microsoft.Office.Interop.Word;
using System.Reflection;
- Для создания и запуска программы нажмите клавишу F5..
- затем –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);
Дополнительные сведения см. в следующих статьях базы знаний Майкрософт:: 301659
(http://support.microsoft.com/kb/301659/
)
МЕТОДИЧЕСКИЕ: Автоматизация Microsoft Word, чтобы выполнить слияние с Visual C# .NET 302902
(http://support.microsoft.com/kb/302902/
)
МЕТОДИЧЕСКИЕ: Привязка для серверов для автоматизации Office с помощью Visual C# .NET Для получения дополнительных сведений посетите следующие веб-страницы узла MSDN:: Код статьи: 316384 - Последнее изменение :: 23 ноября 2010 г. - Редакция: 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 Standard Edition
| kbautomation kbhowtomaster kbmt KB316384 KbMtru |
Переведено с помощью машинного переводаВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода. Эта статья на английском языке: 316384
(http://support.microsoft.com/kb/316384/en-us/
)
| |