푸터 콘텐츠로 바로가기
엑셀 도구

C#에서 PowerPoint 파일을 보는 방법

작성자: Iron Software

Excel에서 Microsoft Word로 메일 병합을 사용하면 각 문서를 수동으로 편집하지 않고도 개인화된 편지, 라벨 또는 이메일을 빠르게 작성할 수 있습니다. 아이디어는 간단합니다: 모든 수신자 정보를 포함한 단일 엑셀 스프레드시트를 유지하고, 이를 Word의 메일 병합 템플릿에 연결하고, 개인화된 데이터가 나타나야 하는 병합 필드를 삽입하고, 데이터를 기반으로 각 행에 대해 별도의 맞춤형 사본을 생성하도록 합니다. 수작업으로 몇 시간이 걸릴 일을 메일링 리스트의 이름, 주소, 세부 사항이 모두 올바르게 채워진 상태로 단 몇 분 만에 처리합니다.

메일 병합 프로세스는 성공적인 실행을 위해 세 가지 문서를 포함합니다: 데이터를 포함한 엑셀 파일, 편지 또는 라벨이 있는 Word의 기본 문서, 그리고 최종적으로 생성된 병합 문서입니다. 성공적인 메일 병합을 위해서는 깨끗한 스프레드시트, 올바르게 포맷된 데이터, 적절한 위치에 병합 필드가 배치된 Word 템플릿이 필요합니다. 우편번호, 화폐, 날짜와 같은 특별한 데이터 유형은 메일 병합을 시작하기 전에 Excel에서 올바르게 포맷되어야 하며, 모든 데이터는 Word가 올바르게 읽을 수 있도록 Excel 통합 문서의 첫 번째 시트에 있어야 합니다.

글은 프로세스의 각 단계를 설명합니다: 엑셀 스프레드시트 준비, 메일링 탭의 데이터 소스로 연결, 병합 필드 삽입, 결과 미리보기, 병합 완료, 이메일 메시지 처리. 엑셀 데이터 소스를 프로그래밍 방식으로 빌드하거나 검증해야 하는 개발자는 Microsoft Office를 설치할 필요 없이 .NET에서 Excel 파일 생성 및 포맷을 처리하는 방법을 설명하는 IronXL 관련 섹션을 찾을 수 있습니다.

단계 1: 엑셀 스프레드시트 준비

깨끗하고 잘 구조화된 엑셀 스프레드시트가 신뢰할 수 있는 Word 메일 병합의 기반입니다. Word를 열기 전에, 데이터와 병합 필드 간의 스프레드시트 일치는 전적으로 엑셀 파일의 설정에 달려 있습니다.

첫 번째 행에 열 머리글. 이름, 주소, 도시, 주, 우편번호와 같이 포함하려는 각 항목에 대해 Excel 스프레드시트에 열이 하나씩 있어야 합니다. 첫 번째 행의 열 이름은 Word에서 사용 가능한 병합 필드가 되므로, 고유하고 명확하게 라벨링되고, 위에 빈 행 없이 배치되어야 합니다. 첫 번째 행에 고유한 머리글이 있고 위로 빈 행이 없도록 하십시오. Word는 첫 번째 행을 사용하여 사용 가능한 병합 필드를 식별합니다.

각 데이터 조각을 별도의 열에 사용하십시오. 이름, 성, 인사말을 별도의 열에 저장하고 이를 결합하지 마십시오. 이렇게 하면 나중에 인사 라인과 주소 블록을 구성할 때 완전한 제어가 가능합니다. Word에서 메일 병합을 실행하기 전에 Excel 파일에 이름, 성, 인사말, 우편번호 및 주소와 같은 필요한 정보가 모두 포함되어 있는지 확인하세요.

우편번호와 ZIP 코드를 텍스트로 포맷하세요. 메일 병합을 위한 Excel 데이터를 준비할 때, ZIP 코드 또는 우편번호 열이 텍스트로 포맷되어 있어야 선두의 0을 잃지 않습니다. 02101과 같은 우편번호는 셀이 숫자로 포맷되면 선두의 0이 묵인되며, 각각의 병합된 편지에서 잘못된 포맷의 출력을 초래합니다.

모든 데이터는 첫 번째 시트에 유지하십시오. 모든 데이터는 성공적인 메일 병합을 위해 Excel 통합 문서의 첫 번째 시트에 있어야 합니다. 통합 문서에 여러 탭이 있는 경우, Word는 첫 번째 시트만 읽으므로 파일을 연결하기 전에 모든 데이터 항목을 시트 1로 이동하십시오.

Excel 파일을 저장하고 닫으십시오. Excel 파일은 메일 병합이 제대로 작동하도록 Microsoft Word에 연결하기 전에 저장하고 닫아야 합니다. 열려 있는 Excel 파일은 Word가 데이터를 가져올 때 연결 오류를 일으킬 수 있습니다.

가능한 경우 열 머리글을 짧고 공백 없이 유지하세요. 열 이름이 "FirstName" 및 "ZipCode"와 같은 경우, 공백이나 특수 문자가 포함된 이름보다 매치 필드 대화 상자와의 문제를 일으킬 가능성이 적습니다.

How To Mail Merge From Excel To Word 1 related to 단계 1: 엑셀 스프레드시트 준비

단계 2: Word 열고 메일 병합 시작하기

엑셀 파일이 준비되면 Microsoft Word를 열고 메인 문서를 만들거나 엽니다. 이미 사용하려는 기존 문서가 있으면 빈 페이지에서 시작하지 않고 지금 여세요. 모든 수신자가 받을 편지, 라벨 또는 이메일 템플릿입니다.

단계별 메일 병합 마법사 사용:

Microsoft Word에서 메일 병합 마법사를 시작하려면, 메일링 탭을 클릭한 다음 Start Mail Merge를 선택하고 목록 맨 아래의 드롭다운 화살표에서 단계별 메일 병합 마법사를 선택하십시오. 메일 병합 마법사는 사용자가 메일 병합 문서를 생성하도록 돕는 단계별 가이드를 제공하며, 초보자가 프로세스를 편리하게 탐색할 수 있도록 합니다. 화면 오른쪽에 패널이 열리고 Word에서 각 단계를 차례로 안내합니다.

메일 병합 마법사를 사용할 때, 사용자는 만들고자 하는 문서 유형을 선택할 수 있으며, 그런 다음 데이터 소스와 연결하고 병합 필드를 삽입하기 위한 단계를 진행합니다. 이 가이드에서는 문서 유형으로 편지를 선택하세요.

메일링 탭 직접 사용:

더 숙련된 사용자는 메일링 탭시작 메일 병합 그룹에서 메일 병합 시작을 클릭하고 마법사 없이 직접 문서 유형을 선택할 수 있습니다. 어떤 접근법을 사용해도 같은 결과에 도달합니다.

How To Mail Merge From Excel To Word 2 related to 메일링 탭 직접 사용:

단계 3: 데이터 소스로 엑셀 파일 연결하기

문서 유형이 설정된 후, 다음 단계는 Word가 수신자 정보를 가져올 위치를 알도록 엑셀 파일을 연결하는 것입니다.

  1. 메일링 탭에서 시작 메일 병합 그룹에서 수신자 선택을 클릭하십시오.
  2. 드롭다운 화살표에서 기존 목록 사용을 선택하십시오. 메일 병합을 위해 Excel 스프레드시트를 Word 문서에 연결하려면, 메일링 탭에서 수신자 선택 옵션 아래에 있는 기존 목록 사용을 선택해야 합니다.
  3. 파일 브라우저가 열립니다. Excel 파일이 있는 폴더로 이동하여 선택하고 열기를 클릭하십시오.
  4. 통합 문서의 시트를 나열하는 대화 상자가 나타납니다. 시트1 (데이터가 포함된 대상 시트)를 선택하고 확인을 클릭하십시오.

Word는 이제 기존 목록으로 엑셀 데이터를 연결합니다. 기존 목록 탐색 옵션을 통해 컴퓨터의 어느 위치에서나 저장된 xlsx 파일을 찾아 열 수 있습니다. 이 시점에서 Word는 워크북의 첫 번째 시트에서 정보를 가져오기 시작하여 각 열 머리글을 병합 필드로 사용할 수 있도록 합니다.

Word가 Excel 파일을 제대로 읽을 수 없는 경우, 파일이 닫혀 있고 xlsx 형식으로 저장되었으며, Sheet 1의 첫 번째 행에 모든 열 머리글이 있어야 하며 위에 빈 행이 없는지 확인하십시오.

연결된 후, 메일링 탭에서 수신자 목록 편집 선택을 클릭하여 메일 병합 수신자 패널을 열 수 있습니다. 이는 스프레드시트의 각 행을 별도의 항목으로 표시합니다. 이를 사용하여 특정 수신자를 선택 해제하거나, 목록을 정렬하거나, 병합에 포함될 행을 필터링할 수 있습니다. Word가 모든 데이터 항목을 올바르게 읽고 있는지 확인하려면 수신자 목록을 신중하게 검토하세요.

How To Mail Merge From Excel To Word 3 related to 단계 3: 데이터 소스로 엑셀 파일 연결하기

단계 4: 문서에 병합 필드 삽입하기

데이터 소스가 연결되면, 개인화된 데이터가 표시될 Word 문서에 메일 병합 필드를 넣을 수 있습니다.

주소 블록 사용:

주소 블록은 이름, 회사, 우편 주소를 하나의 필드로 결합하는 바로가기입니다. 메일링 탭의 필드 삽입 그룹에서 주소 블록을 클릭하십시오. 이름과 주소의 형식을 구성할 수 있는 대화 상자가 나타납니다. 매치 필드 대화 상자에서 필드가 자동으로 열 이름과 맞지 않는 경우 필드 일치를 클릭하십시오. 매치 필드 대화 상자를 통해 열 머리글을 Word가 내부적으로 사용하는 예상 필드 이름에 수동으로 매핑하여 스프레드시트 매치 문제를 해결합니다.

병합 필드 개별 사용:

레이아웃과 포맷에 완벽한 제어를 위해, 한 번에 하나씩 병합 필드를 삽입합니다. 필드를 넣고자 하는 위치에 커서를 위치시키고, 필드 삽입 그룹에서 병합 필드 삽입을 클릭합니다. 드롭다운에는 엑셀 스프레드시트의 모든 열 머리글이 나열됩니다. 필드 이름을 클릭하여 커서 위치에 삽입합니다. 삽입할 일반적인 필드는 다음과 같습니다:

  • 주소 블록 시작 부분의 "Salutation" "FirstName" "LastName"
  • 바로 아래 줄에 "Company"
  • 다음 줄에 "Address"와 함께 "City", "State", "ZipCode"
  • "Dear "Salutation" "LastName","와 같은 인사 라인

인사 라인 사용:

메일링 탭에서 인사 라인 선택을 클릭하여 사전 포맷된 인사를 삽입하십시오. 대화 상자에서 인사 라인 형식(Dear Mr. Smith, Dear James 등)을 선택하고, 이름 필드가 비어있는 수신자를 위한 대체 구성을 할 수 있습니다.

항상 연속된 병합 필드 사이에 공백을 수동으로 추가하십시오. Word는 필드 간 간격을 자동으로 추가하지 않으므로 ""FirstName""LastName""은 두 필드 사이에 공백 문자가 없는 "JamesCarter"로 표시됩니다.

How To Mail Merge From Excel To Word 4 related to 단계 4: 문서에 병합 필드 삽입하기

단계 5: 병합 완료 전에 결과 미리보기

문서에 병합 필드를 삽입한 후, 메일링 탭에서 결과 미리보기를 선택하여 병합된 데이터가 어떻게 나타나는지 미리볼 수 있습니다.

메일링 탭에서 결과 미리보기를 클릭하십시오. Word는 엑셀 스프레드시트의 첫 번째 행에 있는 데이터를 사용하여 모든 병합 필드를 대체합니다. 프리뷰 결과 그룹의 왼쪽 및 오른쪽 화살표를 사용하여 레코드를 이동하고 각 수신자의 데이터가 올바르게 나타나는지 확인하십시오. 이를 통해 전체 병합을 실행하기 전에 수신자 세부 정보를 올바르게 확인할 수 있습니다.

특히 다음을 확인하십시오:

  • 인사 라인이 자연스럽게 읽히는지("Dear Mr. Carter," 가 아닌 "Dear Mr. Carter ,")
  • 주소 블록이 모든 행에서 올바르게 포맷되고, 긴 회사 이름이 포함된 경우도 예외 없이
  • 우편번호 및 우편 주소가 적용 가능한 경우 선두의 0과 함께 표시되는지
  • 페이지 상단의 현재 레코드 카운터가 기대와 일치하는지

이메일 메시지나 편지에 병합 필드를 삽입한 후, 결과가 올바르게 나타나는지 확인하기 위해 병합 프로세스를 완료하기 전에 결과를 미리 볼 수 있습니다. 왼쪽 및 오른쪽 화살표를 사용하여 첫 번째 레코드만이 아니라 여러 레코드를 스크롤하십시오.

How To Mail Merge From Excel To Word 5 related to 단계 5: 병합 완료 전에 결과 미리보기

단계 6: 메일 병합 완료 및 문서 출력

미리보기를 확인한 후, 병합을 실행하고 최종 출력을 생성할 준비가 되었습니다.

새 문서로 병합(권장):

메일링 탭에서 마침 및 병합 버튼을 클릭한 다음 드롭다운 화살표에서 개별 문서 편집을 선택하십시오. 대화 상자가 열릴 때 모든 레코드, 현재 레코드, 또는 범위를 병합할지 묻습니다. 전체를 선택하고 확인을 클릭하세요. Word는 모든 개별 문서를 각 수신자마다 별도의 페이지로 포함하는 새 문서를 생성합니다. 이는 병합된 문서를 인쇄하거나 보내기 전에 검토할 수 있게 해주는 가장 안전한 방법입니다.

검토 후 저장을 선택하여 병합된 문서를 유지하십시오. 파일 > 다른 이름으로 저장을 사용하여 이름을 바꾸고 템플릿 및 데이터 소스와 함께 저장할 수도 있습니다.

직접 인쇄:

마침 및 병합 > 문서 인쇄를 클릭하여 중간 파일을 생성하지 않고 병합 결과를 바로 프린터로 보냅니다. 이는 문서를 즉시 인쇄해야 하고 개별 문서를 먼저 검토하거나 보관할 필요가 없는 경우에 유용합니다.

How To Mail Merge From Excel To Word 6 related to 단계 6: 메일 병합 완료 및 문서 출력 How To Mail Merge From Excel To Word 7 related to 단계 6: 메일 병합 완료 및 문서 출력

단계 7: 우편 라벨 만들기

동일한 메일 병합 프로세스를 Excel 스프레드시트를 데이터 소스로 사용하여 우편 라벨을 만드는 데 적용하고, 편지에 사용된 동일한 단계를 따릅니다.

  1. 메일링 탭에서 Start Mail Merge > Labels 클릭하십시오.
  2. 라벨 옵션 대화 상자에서 컴퓨터의 실제 라벨 시트와 일치하도록 라벨 공급업체와 제품 번호를 선택하십시오.
  3. 수신자 선택 > 기존 목록 사용을 클릭하고 동일한 엑셀 파일에 링크하십시오.
  4. 라벨에 주소 필드를 배치하기 위해 병합 필드 삽입을 클릭하십시오. "FirstName", "LastName", "Address", "City", "State", "ZipCode"를 각각의 라벨 영역 안에 개별 줄로 추가하십시오.
  5. 라벨 업데이트를 클릭하여 페이지의 모든 라벨에 레이아웃을 복사하십시오.
  6. 미리보기 후, 인쇄 준비가 완료된 개별 라벨을 생성하기 위해 병합을 완료하십시오.

단계 8: 메일 병합을 통해 이메일 메시지 보내기

메일 병합은 Microsoft Outlook을 통해 Word에서 개인화된 이메일 메시지를 직접 보낼 수도 있습니다.

메일 병합을 통한 이메일 전송은 Outlook이 열려 있고 기본 이메일 프로그램으로 설정되어 있어야 합니다. 이는 클래식 Outlook과 새로운 Outlook 모두에 적용됩니다. 시작하기 전에 이 구성이 완료되었는지 확인하십시오.

이메일 병합을 설정할 때, 수신자 목록에 이메일 주소 열이 포함되어 있어야 하며, 이를 사용하여 각 수신자에게 개인화된 메시지를 보냅니다. 데모 스프레드시트에서는 이 열이 EmailAddress입니다.

  1. 메일링 탭에서 Start Mail Merge > E-Mail Messages를 클릭하십시오.
  2. Word 문서에 이메일 본문을 작성한 다음, 편지에서와 동일하게 인사 라인 및 모든 개인화된 콘텐츠를 위한 병합 필드를 삽입하십시오.
  3. 수신자 선택 > 기존 목록 사용을 클릭하고 엑셀 파일에 연결하십시오.
  4. 메일 병합을 통해 이메일을 개인화하려면, 대상 목록의 데이터를 대체할 병합 필드를 주 문서에 삽입하십시오.
  5. 마침 및 병합 > 이메일 메시지 보내기를 클릭하십시오.
  6. 대화 상자에서 수신자 필드에 이메일 주소 열(EmailAddress)을 설정하고, 제목 행을 추가한 후, 최고의 호환성을 위해 HTML을 메일 형식으로 선택하십시오.
  7. 확인을 클릭합니다. Word는 Outlook을 통해 각 수신자에게 하나의 개인화된 이메일을 보냅니다. Outlook의 연락처는 연락처 목록이 저장된 경우 엑셀 시트 대신 대체 데이터 소스로 사용할 수 있습니다.

이메일 병합이 완료되면, Outlook 발신함 폴더를 확인하여 메시지가 전송되었는지 확인하십시오. 목록의 각 이메일이 하나의 수신자당 별도의 발신 메시지로 나타납니다.

How To Mail Merge From Excel To Word 8 related to 단계 8: 메일 병합을 통해 이메일 메시지 보내기

일반적인 문제 및 문제 해결

Word가 Excel 파일을 찾을 수 없거나 연결 중에 오류를 반환합니다

Excel 파일이 저장되고 완전히 닫혔는지 확인하여 Word에서 연결을 시도하기 전에 진행하십시오. 저장되지 않은 변경 사항이 있는 열려 있는 통합 문서는 연결을 차단할 수 있습니다. 또한 파일이 .xls가 아닌 .xlsx로 저장되었는지 확인하십시오.

우편 번호나 우편 코드에서 선두의 0이 누락되었습니다

Excel에서 ZipCode 열이 숫자로 포맷된 경우 발생합니다. 스프레드시트를 열고, ZipCode 열을 선택하고 텍스트로 포맷한 다음 선두의 0이 사라진 값을 다시 입력하세요. Excel 파일은 Word에 다시 연결하기 전에 다시 저장 및 닫아야 합니다.

병합 필드가 데이터 대신 필드 코드 ({MERGEFIELD FirstName} 등)를 표시합니다

Word에서 필드 코드 표시와 필드 결과 표시 간 전환하기 위해 Alt + F9를 누르십시오. 이는 병합 자체에는 영향을 미치지 않는 표시 설정입니다.

매치 필드 대화 상자가 매핑되지 않은 필드를 보여줍니다

열 이름이 Word가 주소 블록에 대해 기대하는 이름과 일치하지 않는 경우 발생합니다. 메일링 탭에서 필드 매치를 클릭하고 각 열 이름을 해당 Word 필드에 수동으로 매핑합니다. 예를 들어, Word가 자동으로 인식하지 않는 경우 "우편 번호" 필드에 "ZipCode" 열을 매핑합니다.

일부 수신자가 병합 출력에서 누락되었습니다

메일링 탭에서 수신자 목록 편집 선택을 클릭하여 메일 병합 수신자 패널을 엽니다. 어떤 행이 실수로 선택 해제되었는지 확인하십시오. 또한 엑셀 시트의 데이터 범위 내에 빈 행이 없는지, 이것이 목록의 끝에 도달하기 전에 Word가 데이터 항목을 읽는 것을 중단하도록 하는지 확인하십시오.

이메일 병합을 전송했지만 수신자가 이메일을 받지 않습니다

병합을 실행하기 전에 Outlook이 열려 있고 기본 이메일 프로그램으로 설정되어 있는지 확인하십시오. Outlook 발신 항목 폴더를 확인하여 메시지가 발송되었는지 확인하십시오. 새 Outlook을 사용하는 경우, 클래식 Outlook에 비해 이메일 병합에 대한 제한된 지원을 가질 수 있다는 점을 유의하십시오.

빠른 참조: Excel에서 Word로 메일 병합

작업 이를 찾을 위치 노트
메일 병합 시작 메일링 탭 > 메일 병합 시작 편지, 라벨, 또는 이메일 메시지 선택
Excel 파일 연결 수신자 선택 > 기존 목록 사용 파일은 저장되고 닫혀야 합니다
주소 블록 추가 필드 삽입 그룹 > 주소 블록 열 매핑을 위한 필드 매칭 사용
개별 필드 삽입 필드 삽입 그룹 > 병합 필드 삽입 병합 필드 이름당 하나의 필드
인사 라인 추가 메일링 탭 > 인사 라인 대화 상자에서 인사 라인 형식 선택
병합 미리보기 메일링 탭 > 결과 미리보기 왼쪽 및 오른쪽 화살표를 사용하여 레코드 확인
파일로 병합 완료 마침 및 병합 > 개인 문서 편집 모든 페이지가 있는 새 문서 생성
문서 인쇄 마침 및 병합 > 문서 인쇄 프린터에 직접 전송
이메일 메시지 보내기 마침 및 병합 > 이메일 메시지 보내기 기본 이메일 프로그램으로 Outlook 필요
수신자 목록 편집 수신자 목록 편집 선택 행 필터링, 정렬, 또는 선택 해제

개발자를 위한: IronXL로 Excel 메일 병합 데이터 빌드 및 검증하기

응용 프로그램이 메일 병합 프로세스를 공급하는 Excel 데이터를 생성하는 경우, 해당 파일의 품질 및 포맷이 병합이 성공하는지 여부를 직접 결정합니다. IronXL은 .NET 라이브러리로서, C# 개발자가 서버나 개발자 컴퓨터에 Microsoft Office가 설치되지 않은 상태에서도 프로그래밍 방식으로 Excel 파일을 생성, 읽기 및 포맷할 수 있도록 합니다.

메일 병합 데이터 파일에서 가장 일반적인 실패 지점은 머리글 누락, 병합된 셀, 잘못 입력된 우편 번호 및 데이터 범위 내 빈 행입니다. IronXL은 Word에 파일이 전달되기 전에 각 셀, 열 형태 및 데이터 유형에 대해 완전한 프로그래밍 제어를 제공하여 이러한 문제를 근본적으로 제거합니다.

IronXL을 사용하여 모든 열 머리글이 Sheet 1의 첫 번째 행에 있으며, ZipCode 열이 텍스트로 포맷된 올바르게 구조화된 메일링 리스트 Excel 파일을 생성하는 방법은 다음과 같습니다.

using IronXL;

// Create a new workbook - data must be on the first sheet for mail merge
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet workSheet = workBook.DefaultWorkSheet;
workSheet.Name = "Sheet1";

// Set column headers in row 1 - these become the merge field names in Word
string[] headers = {
    "FirstName", "LastName", "Salutation", "Company",
    "Address", "City", "State", "ZipCode", "EmailAddress"
};

for (int i = 0; i < headers.Length; i++)
{
    var headerCell = workSheet.GetCell(0, i);
    headerCell.Value = headers[i];
    headerCell.Style.Font.Bold = true;
}

// Add recipient data rows
var recipients = new[]
{
    new[] { "James",  "Carter",   "Mr.", "Carter & Associates",   "142 Oak Lane",     "Chicago",  "IL", "60601", "j.carter@carterassoc.com" },
    new[] { "Sarah",  "Mitchell", "Ms.", "Blue Ridge Consulting", "890 Maple Avenue", "Austin",   "TX", "78701", "s.mitchell@blueridge.com" },
    new[] { "Robert", "Nguyen",   "Mr.", "Nguyen Legal Group",    "55 Harbor View",   "Seattle",  "WA", "98101", "r.nguyen@nguyenlegal.com"  },
};

for (int row = 0; row < recipients.Length; row++)
{
    for (int col = 0; col < recipients[row].Length; col++)
    {
        var cell = workSheet.GetCell(row + 1, col);
        cell.Value = recipients[row][col];

        // Format ZipCode column (index 7) as text to preserve leading zeros
        // This prevents postal codes like "02101" from dropping to "2101"
        if (col == 7)
        {
            cell.FormatString = "@"; // @ = text format in Excel
        }
    }
}

// Save - file must be closed before Word can link to it for mail merge
workBook.SaveAs("mailing-list.xlsx");
using IronXL;

// Create a new workbook - data must be on the first sheet for mail merge
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet workSheet = workBook.DefaultWorkSheet;
workSheet.Name = "Sheet1";

// Set column headers in row 1 - these become the merge field names in Word
string[] headers = {
    "FirstName", "LastName", "Salutation", "Company",
    "Address", "City", "State", "ZipCode", "EmailAddress"
};

for (int i = 0; i < headers.Length; i++)
{
    var headerCell = workSheet.GetCell(0, i);
    headerCell.Value = headers[i];
    headerCell.Style.Font.Bold = true;
}

// Add recipient data rows
var recipients = new[]
{
    new[] { "James",  "Carter",   "Mr.", "Carter & Associates",   "142 Oak Lane",     "Chicago",  "IL", "60601", "j.carter@carterassoc.com" },
    new[] { "Sarah",  "Mitchell", "Ms.", "Blue Ridge Consulting", "890 Maple Avenue", "Austin",   "TX", "78701", "s.mitchell@blueridge.com" },
    new[] { "Robert", "Nguyen",   "Mr.", "Nguyen Legal Group",    "55 Harbor View",   "Seattle",  "WA", "98101", "r.nguyen@nguyenlegal.com"  },
};

for (int row = 0; row < recipients.Length; row++)
{
    for (int col = 0; col < recipients[row].Length; col++)
    {
        var cell = workSheet.GetCell(row + 1, col);
        cell.Value = recipients[row][col];

        // Format ZipCode column (index 7) as text to preserve leading zeros
        // This prevents postal codes like "02101" from dropping to "2101"
        if (col == 7)
        {
            cell.FormatString = "@"; // @ = text format in Excel
        }
    }
}

// Save - file must be closed before Word can link to it for mail merge
workBook.SaveAs("mailing-list.xlsx");
Imports IronXL

' Create a new workbook - data must be on the first sheet for mail merge
Dim workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim workSheet As WorkSheet = workBook.DefaultWorkSheet
workSheet.Name = "Sheet1"

' Set column headers in row 1 - these become the merge field names in Word
Dim headers As String() = {
    "FirstName", "LastName", "Salutation", "Company",
    "Address", "City", "State", "ZipCode", "EmailAddress"
}

For i As Integer = 0 To headers.Length - 1
    Dim headerCell = workSheet.GetCell(0, i)
    headerCell.Value = headers(i)
    headerCell.Style.Font.Bold = True
Next

' Add recipient data rows
Dim recipients = {
    New String() { "James",  "Carter",   "Mr.", "Carter & Associates",   "142 Oak Lane",     "Chicago",  "IL", "60601", "j.carter@carterassoc.com" },
    New String() { "Sarah",  "Mitchell", "Ms.", "Blue Ridge Consulting", "890 Maple Avenue", "Austin",   "TX", "78701", "s.mitchell@blueridge.com" },
    New String() { "Robert", "Nguyen",   "Mr.", "Nguyen Legal Group",    "55 Harbor View",   "Seattle",  "WA", "98101", "r.nguyen@nguyenlegal.com"  }
}

For row As Integer = 0 To recipients.Length - 1
    For col As Integer = 0 To recipients(row).Length - 1
        Dim cell = workSheet.GetCell(row + 1, col)
        cell.Value = recipients(row)(col)

        ' Format ZipCode column (index 7) as text to preserve leading zeros
        ' This prevents postal codes like "02101" from dropping to "2101"
        If col = 7 Then
            cell.FormatString = "@" ' @ = text format in Excel
        End If
    Next
Next

' Save - file must be closed before Word can link to it for mail merge
workBook.SaveAs("mailing-list.xlsx")
$vbLabelText   $csharpLabel

기존 Excel 파일을 읽고 메일 병합 워크플로우에 연결하기 전에 검증하려면, IronXL을 사용하여 필요한 구조를 간단하게 확인할 수 있습니다.

using IronXL;

WorkBook workBook = WorkBook.Load("mailing-list.xlsx");

// Always read from the first sheet for mail merge compatibility
WorkSheet firstSheet = workBook.DefaultWorkSheet;

// Verify the first row contains column headers, not data
string firstHeader = firstSheet["A1"].StringValue;
Console.WriteLine($"First column header: {firstHeader}");

// Read all recipient data rows
foreach (var row in firstSheet.Rows.Skip(1)) // Skip header row
{
    string firstName = row[0].StringValue;
    string lastName  = row[1].StringValue;
    string zipCode   = row[7].StringValue; // Read as string to preserve leading zeros
    Console.WriteLine($"{firstName} {lastName} - ZIP: {zipCode}");
}
using IronXL;

WorkBook workBook = WorkBook.Load("mailing-list.xlsx");

// Always read from the first sheet for mail merge compatibility
WorkSheet firstSheet = workBook.DefaultWorkSheet;

// Verify the first row contains column headers, not data
string firstHeader = firstSheet["A1"].StringValue;
Console.WriteLine($"First column header: {firstHeader}");

// Read all recipient data rows
foreach (var row in firstSheet.Rows.Skip(1)) // Skip header row
{
    string firstName = row[0].StringValue;
    string lastName  = row[1].StringValue;
    string zipCode   = row[7].StringValue; // Read as string to preserve leading zeros
    Console.WriteLine($"{firstName} {lastName} - ZIP: {zipCode}");
}
Imports IronXL

Dim workBook As WorkBook = WorkBook.Load("mailing-list.xlsx")

' Always read from the first sheet for mail merge compatibility
Dim firstSheet As WorkSheet = workBook.DefaultWorkSheet

' Verify the first row contains column headers, not data
Dim firstHeader As String = firstSheet("A1").StringValue
Console.WriteLine($"First column header: {firstHeader}")

' Read all recipient data rows
For Each row In firstSheet.Rows.Skip(1) ' Skip header row
    Dim firstName As String = row(0).StringValue
    Dim lastName As String = row(1).StringValue
    Dim zipCode As String = row(7).StringValue ' Read as string to preserve leading zeros
    Console.WriteLine($"{firstName} {lastName} - ZIP: {zipCode}")
Next
$vbLabelText   $csharpLabel

IronXL은 .NET 6 및 이후 버전에서 실행되며, Windows, Linux, macOS, Docker 및 Azure와 완전히 호환되어 서버측 응용 프로그램, 예약 작업 또는 웹 API에서 Microsoft Office에 대한 의존성 없이 메일 병합 데이터 파일을 생성하는 데 적합합니다.

시작: NuGet에서 Install-Package IronXL.Excel로 설치하세요. 무료 체험은 30일 동안의 전체 기능과 신용 카드가 필요 없는 상태로 제공됩니다.

추가 읽기:

마무리

엑셀 스프레드시트에서 워드 메일 병합을 실행하는 것은 대량으로 개인화된 편지, 메일 라벨, 이메일 메시지를 생성하는 가장 신뢰할 수 있는 방법 중 하나입니다. 이 프로세스는 세 가지 핵심 단계로 요약됩니다: 첫 번째 시트에 올바르게 포맷된 데이터가 있는 깨끗한 메일링 리스트를 Excel에서 생성하고, Mailings 탭을 통해 그 파일을 Word에 기존 목록 사용으로 연결하며, 수신자의 데이터가 선택적 삽입되어야 할 장소를 정확히 배치하십시오.

데이터 소스가 연결되면, Word의 필드 삽입 그룹 및 주소 블록 도구가 주된 역할을 수행합니다. 병합을 마치기 전에 왼쪽 및 오른쪽 화살표를 사용하여 결과를 미리 보기로 확인하여 잘못된 포맷, 필드 불일치, 누락된 우편 코드를 수신자에게 도달하기 전에 잡아낼 수 있습니다. 메일 병합이 완료되면, 데이터를 다시 연결하지 않고도 향후 사용을 위해 데이터 소스에 대한 연결이 유지되는 병합 문서를 저장하도록 선택할 수 있습니다.

메일 병합 워크플로우에 입력되는 Excel 데이터를 생성하거나 변환하는 응용 프로그램을 사용하는 개발팀에게 IronXL은 .NET에서 Office 종속성 없이 올바르게 구조화되고 적절히 포맷된 스프레드시트 파일을 생성하기 위한 깔끔한 API를 제공합니다. 자신의 환경에서 전체 기능 세트를 탐색하려면 무료 체험을 시작하세요.

특정 메일 병합 시나리오에 대한 질문이나 예상대로 작동하지 않는 단계가 있습니까? 아래에 댓글을 남기거나, Iron Software 블로그를 방문하여 Excel 자동화, 데이터 형식화 및 문서 생성에 대한 추가 지원을 받으세요.

Curtis Chau
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해