명명된 인수와 선택적 인수는 C# 프로그래밍의 편리성, 유연성 및 가독성을 향상시킵니다. 또한 이러한 기능은 Microsoft Office 자동화 API와 같은 COM 인터페이스에 대한 액세스를 크게 용이하게 합니다.
중요합니다
VSTO(Visual Studio Tools for Office) 는 .NET Framework를 사용합니다. COM 추가 기능은 .NET Framework를 사용하여 작성할 수도 있습니다. 최신 버전의 .NET Core 및 .NET 5 이상에서는 Office 추가 기능을 만들 수 없습니다. .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
Program.cs 클래스에서 다음 메서드를 추가하여 Word 응용 프로그램 및 Word 문서를 만듭니다.
Add 메서드에는 네 개의 선택적 매개 변수가 있습니다. 이 예제에서는 기본값을 사용합니다. 따라서 호출 문에는 인수가 필요하지 않습니다.
비고
"애플리케이션이 사용 중임을 나타내는 메시지 필터"(HRESULT 0x8001010A)와 같은 예외를 일으킬 수 있는 COM 스레딩 및 타이밍 문제를 방지하기 위해 Word 응용 프로그램은 작업 중에 보이지 않고 모든 작업이 완료된 후에만 표시됩니다.
static void DisplayInWord()
{
var wordApp = new Word.Application();
// Keep Word invisible during operations to avoid COM threading issues
wordApp.Visible = false;
// 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();
// Make Word visible after operations are complete
wordApp.Visible = true;
}
메서드 끝에 다음 코드를 추가하여 문서에서 텍스트를 표시할 위치와 표시할 텍스트를 정의합니다.
// 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 키를 눌러 프로젝트를 실행합니다.
다른 매개 변수를 사용하여 실험
하나의 열과 세 개의 행이 있도록 테이블을 변경하고 마지막 줄을 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();
// Keep Word invisible during operations to avoid COM threading issues
wordApp.Visible = false;
// 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);
// Make Word visible after all operations are complete
wordApp.Visible = true;
}
}
}
.NET