HOW TO: Visual C# .NET에서 Word를 자동화하여 새 문서 만들기

기술 자료 번역 기술 자료 번역
기술 자료: 316384 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

요약

이 문서에서는 Visual C# .NET의 자동화를 사용하여 Word에서 새 문서를 만드는 방법을 단계별로 설명합니다.

예제 코드

본 문서의 예제 코드는 다음 작업을 수행하는 방법을 보여줍니다.
  • 텍스트와 서식이 있는 단락을 삽입합니다.
  • 문서 내의 여러 범위를 탐색 및 수정합니다.
  • 표를 삽입하고, 표에 서식을 지정하고 표를 데이터로 채웁니다.
  • 차트를 추가합니다.
Visual C# .NET의 자동화를 사용하여 새 Word 문서를 만들려면 다음과 같이 하십시오.
  1. Microsoft Visual Studio .NET을 시작합니다. 파일 메뉴에서 새로 만들기를 누른 다음 프로젝트를 누릅니다. 프로젝트 형식에서 Visual C# 프로젝트를 누른 다음 템플릿에서 Windows 응용 프로그램을 누릅니다. 기본적으로 Form1이 생성됩니다.
  2. Microsoft Word Object Library에 대한 참조를 추가합니다. 이렇게 하려면 다음과 같이 하십시오.
    1. 프로젝트 메뉴에서 참조 추가를 누릅니다.
    2. COM 탭에서 Microsoft Word Object Library를 찾은 다음 선택을 누릅니다.
    3. 참조 추가 대화 상자에서 확인을 눌러 선택한 내용을 적용합니다. 선택한 라이브러리에 대해 래퍼를 만들 것인지 묻는 메시지가 나타나면 를 누릅니다.
  3. 보기 메뉴에서 도구 상자를 선택하여 도구 상자를 표시한 다음 Form1에 Button 컨트롤을 추가합니다.
  4. Button1을 두 번 누릅니다. 해당 폼에 대한 코드 창이 나타납니다.
  5. 코드 창에서 아래의 코드를
    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();
    }
    					
  6. 코드 창의 맨 위로 스크롤합니다. using 지시문 목록의 끝에 다음 행을 추가합니다.
    using Word = Microsoft.Office.Interop.Word;
    using System.Reflection;
    					
  7. F5 키를 눌러 프로그램을 빌드하고 실행합니다.
  8. Button1을 눌러 Word 자동화를 시작하고 문서를 만듭니다.
코드가 완료된 후 만들어진 문서를 검사하십시오. 문서에 서식이 지정된 단락, 표 및 차트가 두 페이지 포함되어 있습니다.

템플릿 사용

자동화를 사용하여 모두 하나의 공통 형식으로 되어 있는 문서를 작성하는 경우, 미리 서식이 지정된 템플릿 기반의 새 문서를 사용하여 프로세스를 시작하면 도움이 됩니다. 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 기술 자료의 다음 문서를 참조하십시오.
301659 HOWTO: Visual C# .NET에서 편지 병합을 수행하기 위해 Microsoft Word 자동화
302902 HOWTO: Visual C# .NET을 사용한 Office 자동화 서버의 바인딩
자세한 내용은 다음 MSDN(Microsoft Developer Network) 웹 사이트를 참조하십시오.
Visual Studio를 사용한 Microsoft Office 개발
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx

Office의 Word(MSDN 온라인 문서)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnofftalk/html/office112000.asp

또 하나의 Word(MSDN 온라인 문서)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnofftalk/html/office12072000.asp




Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.

속성

기술 자료: 316384 - 마지막 검토: 2007년 1월 17일 수요일 - 수정: 3.2
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Word 2002 Standard Edition
키워드:?
kbautomation kbhowtomaster KB316384

피드백 보내기

 

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