Office 프로그래밍에 명명된 인수와 선택적 인수 사용 방법
명명된 인수 및 선택적 인수는 C# 프로그래밍의 편의성, 유연성 및 가독성을 향상시킵니다. 또한 이러한 기능은 Microsoft Office 자동화 API와 같은 COM 인터페이스에 대한 액세스에 큰 도움이 됩니다.
Important
VSTO(Visual Studio Tools for Office)는 .NET Framework를 사용합니다. COM 추가 기능은 .NET Framework를 사용하여 작성할 수도 있습니다. Office 추가 기능은 최신 버전인 .NET Core 및 .NET 5 이상으로 만들 수 없습니다. .NET Core 및 .NET 5 이상은 동일한 프로세스에서 .NET Framework와 함께 작동할 수 없으며 추가 기능 로드 실패로 이어질 수 있기 때문입니다. 계속해서 .NET Framework를 사용하여 Office용 VSTO 및 COM 추가 기능을 작성할 수 있습니다. Microsoft는 .NET Core 또는 .NET 5 이상을 사용하도록 VSTO 또는 COM 추가 기능 플랫폼을 업데이트하지 않습니다. ASP.NET Core를 포함한 .NET Core 및 .NET 5 이상을 활용하여 Office 웹 추가 기능의 서버 쪽을 만들 수 있습니다.
다음 예제의 ConvertToTable 메서드에는 열과 행 수, 서식, 테두리, 글꼴, 색 등의 테이블 특성을 나타내는 매개 변수 16개가 있습니다. 16개 매개 변수는 모두 선택 사항입니다. 대부분의 경우 모든 매개 변수에 대해 특정 값을 지정하고 싶지 않기 때문입니다. 그러나 명명된 인수와 선택적 인수가 없으면 값이나 자리 표시자 값을 제공해야 합니다. 명명된 인수와 선택적 인수를 사용하여 프로젝트에 필요한 매개 변수에 대해서만 값을 지정합니다.
이 절차를 완료하려면 컴퓨터에 Microsoft Office Word가 설치되어 있어야 합니다.
참고
일부 Visual Studio 사용자 인터페이스 요소의 경우 다음 지침에 설명된 것과 다른 이름 또는 위치가 시스템에 표시될 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 IDE 개인 설정을 참조하세요.
새 콘솔 애플리케이션 만들기
Visual Studio를 시작합니다. 파일 메뉴에서 새로 만들기를 가리킨 다음, 프로젝트를 선택합니다. 템플릿 범주 창에서 C#을 확장한 다음 Windows를 선택합니다. 템플릿 창의 맨 위에서 .NET Framework 4가 대상 프레임워크 상자에 표시되는지 확인합니다. 템플릿 창에서 콘솔 애플리케이션을 선택합니다. 이름 필드에 프로젝트의 이름을 입력합니다. 확인을 선택합니다. 솔루션 탐색기에 새 프로젝트가 표시됩니다.
참조 추가
솔루션 탐색기에서 프로젝트 이름을 마우스 오른쪽 단추로 클릭한 다음 참조 추가를 선택합니다. 참조 추가 대화 상자가 나타납니다. .NET 페이지의 구성 요소 이름 목록에서 Microsoft.Office.Interop.Word를 선택합니다. 확인을 선택합니다.
필요한 using 지시문 추가
솔루션 탐색기에서 Program.cs 파일을 마우스 오른쪽 단추로 클릭한 다음 코드 보기를 선택합니다. 다음 using
지시문을 코드 파일의 맨 위에 추가합니다.
using Word = Microsoft.Office.Interop.Word;
Word 문서에 텍스트 표시
Program.cs의 Program
클래스에서 다음 메서드를 추가하여 Word 애플리케이션과 Word 문서를 만듭니다. Add 메서드에는 선택적 매개 변수 4개가 있습니다. 이 예제에서는 해당 기본값을 사용합니다. 따라서 호출하는 문에 인수가 필요하지 않습니다.
static void DisplayInWord()
{
var wordApp = new Word.Application();
wordApp.Visible = true;
// docs is a collection of all the Document objects currently
// open in Word.
Word.Documents docs = wordApp.Documents;
// Add a document to the collection and name it doc.
Word.Document doc = docs.Add();
}
메서드의 끝에 다음 코드를 추가하여 문서에서 텍스트를 표시할 위치 및 표시할 텍스트를 정의합니다.
// Define a range, a contiguous area in the document, by specifying
// a starting and ending character position. Currently, the document
// is empty.
Word.Range range = doc.Range(0, 0);
// Use the InsertAfter method to insert a string at the end of the
// current range.
range.InsertAfter("Testing, testing, testing. . .");
애플리케이션 실행
다음 문을 Main에 추가합니다.
DisplayInWord();
Ctrl+F5를 눌러 프로젝트를 실행합니다. 지정된 텍스트를 포함하는 Word 문서가 나타납니다.
텍스트를 표로 변경
ConvertToTable
메서드를 사용하여 텍스트를 표로 묶습니다. 이 메서드에는 16개의 선택적 매개 변수가 있습니다. IntelliSense는 다음 그림과 같이 선택적 매개 변수를 중괄호로 묶습니다. Type.Missing
의 기본값은 System.Type.Missing
의 간단한 이름입니다.
명명된 인수 및 선택적 인수를 사용하면 변경하려는 매개 변수의 값만 지정할 수 있습니다. 테이블을 만들려면 DisplayInWord
메서드 끝에 다음 코드를 추가합니다. 인수는 range
의 텍스트 문자열에 있는 쉼표가 표의 셀을 구분하도록 지정합니다.
// Convert to a simple table. The table will have a single row with
// three columns.
range.ConvertToTable(Separator: ",");
Ctrl+F5를 눌러 프로젝트를 실행합니다.
다른 매개 변수로 실험
열 1개와 행 3개가 포함되도록 표를 변경하고 DisplayInWord
의 마지막 줄을 다음 문으로 바꾼 다음 Ctrl+F5를 입력합니다.
range.ConvertToTable(Separator: ",", AutoFit: true, NumColumns: 1);
미리 정의된 표 형식을 지정하고 DisplayInWord
의 마지막 줄을 다음 문으로 바꾼 다음 Ctrl+F5를 입력합니다. 형식은 WdTableFormat 상수 중 하나일 수 있습니다.
range.ConvertToTable(Separator: ",", AutoFit: true, NumColumns: 1,
Format: Word.WdTableFormat.wdTableFormatElegant);
예제
다음 코드에는 전체 예제가 포함되어 있습니다.
using System;
using Word = Microsoft.Office.Interop.Word;
namespace OfficeHowTo
{
class WordProgram
{
static void Main(string[] args)
{
DisplayInWord();
}
static void DisplayInWord()
{
var wordApp = new Word.Application();
wordApp.Visible = true;
// docs is a collection of all the Document objects currently
// open in Word.
Word.Documents docs = wordApp.Documents;
// Add a document to the collection and name it doc.
Word.Document doc = docs.Add();
// Define a range, a contiguous area in the document, by specifying
// a starting and ending character position. Currently, the document
// is empty.
Word.Range range = doc.Range(0, 0);
// Use the InsertAfter method to insert a string at the end of the
// current range.
range.InsertAfter("Testing, testing, testing. . .");
// You can comment out any or all of the following statements to
// see the effect of each one in the Word document.
// Next, use the ConvertToTable method to put the text into a table.
// The method has 16 optional parameters. You only have to specify
// values for those you want to change.
// Convert to a simple table. The table will have a single row with
// three columns.
range.ConvertToTable(Separator: ",");
// Change to a single column with three rows..
range.ConvertToTable(Separator: ",", AutoFit: true, NumColumns: 1);
// Format the table.
range.ConvertToTable(Separator: ",", AutoFit: true, NumColumns: 1,
Format: Word.WdTableFormat.wdTableFormatElegant);
}
}
}
.NET