Skip to footer content
EXCEL TOOLS

How to Mail Merge from Excel to Word: A Complete Step-by-Step Guide (2026)

Written by the team at Iron Software

Mail merge from Excel to Microsoft Word allows for the quick creation of personalized letters, labels, or emails without manually editing each document. The idea is simple: you maintain a single excel spreadsheet containing all your recipient details, connect it to a word mail merge template, insert merge fields where the personalised data should appear, and let Word generate a separate, customised copy for every row in your data. What would take hours of manual editing gets done in minutes, with every name, address, and detail populated correctly from your mailing list.

The mail merge process involves three documents involved in any successful run: the excel file containing the data, the main document in Word where the letter or label lives, and the merged document that is produced at the end. A successful mail merge requires a clean spreadsheet, correctly formatted data, and a Word template with merge fields placed in the right positions. Special data types such as zip codes, currencies, and dates should be correctly formatted in Excel before starting a mail merge, and all data must be on the first sheet of the Excel workbook for Word to read it properly.

This article explains every step of the process: preparing your excel spreadsheet, connecting it as a data source in the mailings tab, inserting merge fields, previewing results, completing the merge, and handling email messages. Developers who need to build or validate Excel data sources programmatically before running a merge will find a section at the end covering how IronXL handles Excel file creation and formatting in .NET without requiring Microsoft Office to be installed.

Step 1: Prepare Your Excel Spreadsheet

A clean, well-structured excel spreadsheet is the foundation of a reliable word mail merge. Before opening Word, the spreadsheet match between your data and your merge fields depends entirely on how the Excel file is set up.

Column headers on the first row. Ensure your Excel spreadsheet has one column for each item you want to include, such as Name, Address, City, State, and Zip Code. Column names in the first row become the merge fields available in Word, so they should be unique, clearly labelled, and placed with no blank rows above them. Ensure the first row contains unique headers and no blank rows above it, as Word uses the first row to identify available merge fields.

Use separate columns for each piece of data. Store first name, last name, and salutation in separate columns rather than combining them. This gives you full control when building the greeting line and address block later. Before running a mail merge in Word, make sure your Excel file contains all the necessary information, such as first name, last name, salutation, zip codes, and addresses.

Format postal codes and zip codes as text. When preparing your Excel data for a mail merge, ensure that the column for ZIP codes or postal codes is formatted as text to avoid losing any leading zeros. A zip code like 02101 will silently drop the leading zero if the cell is formatted as a number, causing incorrectly formatted output in every merged letter.

Keep all data on the first sheet. All data must be on the first sheet of the Excel workbook for a successful mail merge. If your workbook has multiple tabs, Word will only read the first sheet, so move all your data entries to Sheet 1 before connecting the file.

Save and close the Excel file. Excel files must be saved and closed before linking to Microsoft Word for mail merge to work properly. An open Excel file can cause connection errors when Word tries to import the data.

Keep the column headers short and free of spaces where possible. Column names like "FirstName" and "ZipCode" are less likely to cause issues with the match fields dialog box than names containing spaces or special characters.

How To Mail Merge From Excel To Word 1 related to Step 1: Prepare Your Excel Spreadsheet

Step 2: Open Word and Start the Mail Merge

With the excel file ready, open Microsoft Word and create or open your main document. If you already have an existing document you want to use as the letter template, open it now rather than starting from a blank page. This is the letter, label, or email template that every recipient will receive.

Using the Step-by-Step Mail Merge Wizard:

To start the Mail Merge Wizard in Microsoft Word, click the Mailings tab, then select Start Mail Merge, and choose Step-by-Step Mail Merge Wizard from the drop down arrow at the bottom of the list. The Mail Merge Wizard provides a step-by-step guide to help users create mail merge documents, making it easier for beginners to navigate the process. A panel opens on the right side of the screen and Word prompts you through each stage in sequence.

When using the Mail Merge Wizard, users can select the type of document they want to create, such as letters or labels, and then proceed through the steps to connect to their data source and insert merge fields. For this guide, select Letters as the document type.

Using the Mailings tab directly:

More experienced users can click start mail merge from the start mail merge group in the Mailings tab and choose the document type directly without the wizard. Either approach leads to the same result.

How To Mail Merge From Excel To Word 2 related to Using the Mailings tab directly:

Step 3: Connect Your Excel File as the Data Source

Once the document type is set, the next step is to link your excel file so Word knows where to pull the recipient details from.

  1. In the Mailings tab, click Select Recipients in the start mail merge group.
  2. From the drop down arrow, choose Use an Existing List. To connect your Excel spreadsheet to a Word document for mail merge, you need to select Use an Existing List under the Select Recipients option in the Mailings tab.
  3. A file browser opens. Navigate to the folder containing your Excel file, select it, and click Open.
  4. A dialog box appears listing the sheets in the workbook. Select Sheet1 (the target sheet containing your data) and click OK.

Word is now connected to your excel data as the existing list. The existing list browse option allows you to locate and open the saved xlsx file from any location on your computer. At this point, Word begins importing information from the first sheet of the workbook, making every column header available as a merge field.

If Word cannot read the Excel file correctly, check that the file is closed, saved in xlsx format, and that all column headers are on the first row of Sheet 1 with no blank rows above them.

Once connected, you can click choose edit recipient list in the Mailings tab to open the mail merge recipients panel. This shows every row from your spreadsheet as a separate entry. You can use it to deselect specific recipients, sort the list, or filter which rows are included in the merge. Review the recipient list carefully before proceeding to ensure Word is properly read-ing all your data entries.

How To Mail Merge From Excel To Word 3 related to Step 3: Connect Your Excel File as the Data Source

Step 4: Insert Merge Fields Into Your Document

With the data source connected, you can now place mail merge fields inside the word document wherever you want personalised data to appear.

Using the Address Block:

The address block is a shortcut that combines name, company, and mailing address into a single field. Click Address Block in the insert fields group of the Mailings tab. A dialog box appears where you can configure how the name and address are formatted. Click Match Fields if any field in the match fields dialog box does not automatically align with your column names. The match fields dialog box lets you manually map your column headers to the expected field names Word uses internally, resolving any spreadsheet match issues.

Using individual Merge Fields:

For full control over layout and formatting, insert merge fields one at a time. Position your cursor where you want a field, then click Insert Merge Fields in the insert fields group. A drop-down lists every column header from your excel spreadsheet. Click the field name to insert it at the cursor position. Common fields to insert include:

  • «Salutation» «FirstName» «LastName» for the opening of the address block
  • «Company» on the line below
  • «Address» followed by «City», «State», and «ZipCode» on the next line
  • A greeting line such as "Dear «Salutation» «LastName»,"

Using the Greeting Line:

Click choose greeting line in the Mailings tab to insert a pre-formatted greeting. The dialog box lets you choose the greeting line format (Dear Mr. Smith, Dear James, etc.) and configure a fallback for recipients whose name field is empty.

Always add a space between consecutive merge fields manually. Word does not add spacing between fields automatically, so "«FirstName»«LastName»" will display as "JamesCarter" without a space character between the two fields.

How To Mail Merge From Excel To Word 4 related to Step 4: Insert Merge Fields Into Your Document

Step 5: Preview Results Before Completing the Merge

After inserting merge fields into your document, you can preview the results by selecting Preview Results in the Mailings tab, allowing you to see how the merged data will appear.

Click Preview Results in the Mailings tab. Word replaces every merge field with the corresponding data from the first row of your excel spreadsheet. Use the left and right arrows in the Preview Results group to move between records and check that each recipient's data appears correctly. This lets you verify the recipient details correctly before committing to the full merge.

Check in particular:

  • That the greeting line reads naturally ("Dear Mr. Carter," not "Dear Mr. Carter ,")
  • That the address block formats correctly across all rows, including those with longer company names
  • That zip codes and postal codes display with leading zeros where applicable
  • That the current record counter at the top of the page matches what you expect

After inserting merge fields into your email message or letter, you can preview the results to confirm that the content appears correctly before completing the merge process. Use left and right arrows to scroll through several records, not just the first one.

How To Mail Merge From Excel To Word 5 related to Step 5: Preview Results Before Completing the Merge

Step 6: Complete the Mail Merge and Output Your Documents

With the preview confirmed, you are ready to run the merge and produce the final output.

Merging to a new document (recommended):

In the Mailings tab, click the Finish and Merge button, then choose Edit Individual Documents from the drop down arrow. A dialog box asks whether to merge all records, the current record, or a range. Select All and click OK. Word generates a new document containing all the individual documents as separate pages, one per recipient. This is the safest approach because it lets you review the merged document before printing or sending.

Choose save after reviewing to keep the merged document. You can also choose save using File > Save As to rename it and store it alongside your template and data source.

Printing directly:

Click Finish and Merge > Print Documents to send the merge results directly to the printer without creating an intermediate file. This is useful when you need to print documents immediately and do not need to review or archive the individual documents first.

How To Mail Merge From Excel To Word 6 related to Step 6: Complete the Mail Merge and Output Your Documents How To Mail Merge From Excel To Word 7 related to Step 6: Complete the Mail Merge and Output Your Documents

Step 7: Create Mailing Labels

The same mail merge process applies to creating mailing labels using an Excel spreadsheet as the data source, following the same steps used for letters.

  1. In the Mailings tab, click Start Mail Merge > Labels.
  2. In the Label Options dialog box, choose your label vendor and product number to match the physical label sheets on your computer.
  3. Click Select Recipients > Use an Existing List and link to the same excel file.
  4. Click Insert Merge Fields to place the address fields on the label. Add «FirstName», «LastName», «Address», «City», «State>>, and «ZipCode» on separate lines within the individual labels area.
  5. Click Update Labels to copy the layout to all labels on the page.
  6. Preview, then finish and merge to produce individual labels ready to print.

Step 8: Send Email Messages via Mail Merge

Mail merge can also send personalised email messages directly from Word through Microsoft Outlook.

Emailing through mail merge requires Outlook to be open and set as the default email program. This applies to both classic Outlook and new Outlook. Ensure this is configured before starting.

When setting up an email merge, ensure that your mailing list includes a column for email addresses, which will be used to send personalized messages to each recipient. In the demo spreadsheet, this is the EmailAddress column.

  1. In the Mailings tab, click Start Mail Merge > E-Mail Messages.
  2. Write your email body in the Word document, then insert merge fields for the greeting line and any personalised content exactly as you would for a letter.
  3. Click Select Recipients > Use an Existing List and connect to your excel file.
  4. To personalize email messages using mail merge, insert merge fields in your main document such as names and addresses, which will be replaced with the corresponding data from your mailing list.
  5. Click Finish and Merge > Send Email Messages.
  6. In the dialog box, set the To field to your email address column (EmailAddress), add a subject line, and select HTML as the mail format for best compatibility.
  7. Click OK. Word sends one personalised email to each recipient through Outlook. Outlook contacts can also be used as an alternative data source instead of an excel sheet if your contact list is stored there.

After completing an email merge, check your Outlook Sent Items folder to confirm the messages were dispatched. Each email in the list appears as a separate sent message, one per recipient.

How To Mail Merge From Excel To Word 8 related to Step 8: Send Email Messages via Mail Merge

Common Issues and Troubleshooting

Word cannot find the Excel file or returns an error on connection

Check that the excel file is saved and fully closed before attempting to link it in Word. An open workbook with unsaved changes can block the connection. Also confirm the file is saved as .xlsx rather than .xls or another format.

Zip codes or postal codes are missing their leading zeros

This happens when the ZipCode column in Excel is formatted as a number rather than text. Open the spreadsheet, select the ZipCode column, format it as Text, then re-enter any values that lost their leading zeros. Excel files must be saved and closed again before reconnecting in Word.

Merge fields show field codes instead of data (e.g. {MERGEFIELD FirstName})

Press Alt + F9 to toggle between field code display and field result display in Word. This is a display setting that does not affect the merge itself.

The match fields dialog box shows unmapped fields

This occurs when your column names do not match the names Word expects for the address block. Click Match Fields in the Mailings tab and manually map each column name to the corresponding Word field. For example, map your "ZipCode" column to the "Postal Code" field if Word does not recognise it automatically.

Some recipients are missing from the merge output

Open the mail merge recipients panel by clicking choose edit recipient list in the Mailings tab. Check whether any rows have been accidentally deselected. Also confirm there are no blank rows within your data range in the excel sheet, as these can cause Word to stop reading data entries before reaching the end of the list.

The email merge sends but recipients do not receive the emails

Confirm Outlook is open and set as the default email program before running the merge. Check the Outlook Sent Items folder to see whether the messages were dispatched. If using new Outlook, note that some versions have limited support for email merge compared to classic Outlook.

Quick Reference: Mail Merge from Excel to Word

Task Where to find it Notes
Start mail merge Mailings tab > Start Mail Merge Choose Letters, Labels, or E-Mail Messages
Connect Excel file Select Recipients > Use an Existing List File must be saved and closed
Add address block Insert Fields group > Address Block Use Match Fields for column mapping
Insert individual fields Insert Fields group > Insert Merge Fields One field per merge field name
Add greeting line Mailings tab > Greeting Line Choose greeting line format in dialog
Preview merge Mailings tab > Preview Results Use left and right arrows to check records
Complete merge to file Finish and Merge > Edit Individual Documents Creates new document with all pages
Print documents Finish and Merge > Print Documents Sends directly to printer
Send email messages Finish and Merge > Send Email Messages Requires Outlook as default email program
Edit recipient list Choose Edit Recipient List Filter, sort, or deselect rows

For Developers: Build and Validate Excel Mail Merge Data with IronXL

If your application generates the Excel data source that feeds a mail merge process, the quality and formatting of that file directly determines whether the merge succeeds. IronXL is a .NET library that lets C# developers create, read, and format Excel files programmatically without requiring Microsoft Office to be installed on the server or developer machine.

The most common failure points in mail merge data files are missing headers, merged cells, incorrectly typed zip codes, and blank rows within the data range. IronXL gives you complete programmatic control over every cell, column format, and data type before the file is handed to Word, eliminating these issues at the source.

Here is how to create a correctly structured mailing list Excel file using IronXL, with all column headers on the first row of Sheet 1 and the ZipCode column formatted as text:

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

To read and validate an existing Excel file before connecting it to a mail merge workflow, IronXL makes it simple to check for the required structure:

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 runs on .NET 6 and later, and is fully compatible with Windows, Linux, macOS, Docker, and Azure, making it suitable for generating mail merge data files from server-side applications, scheduled jobs, or web APIs without any dependency on Microsoft Office.

Getting started: Install via NuGet with Install-Package IronXL.Excel. A free trial is available with 30 days of full functionality and no credit card required.

Further reading:

Wrapping Up

Running a word mail merge from an excel spreadsheet is one of the most reliable ways to produce personalised letters, mailing labels, and email messages at scale. The process comes down to three core steps: building a clean mailing list in Excel with correctly formatted data on the first sheet, connecting that file to Word via the Mailings tab using Use an Existing List, and placing merge fields precisely where each piece of recipient data should appear.

Once the data source is connected, the insert fields group and address block tools in Word handle the heavy lifting. Preview results with left and right arrows before finishing the merge to catch any formatting issues, misaligned fields, or missing postal codes before they reach a recipient. Once the mail merge is complete, you can choose to save the merged document, which retains the connection to the data source, allowing for future use without needing to reconnect.

For development teams whose applications generate or transform the Excel data that feeds into a mail merge workflow, IronXL provides a clean API for creating correctly structured, properly formatted spreadsheet files in .NET without Office dependencies. Start with a free trial to explore the full feature set in your own environment.

Questions about a specific mail merge scenario or a step that did not work as expected? Leave a comment below, or visit the Iron Software blog for further assistance with Excel automation, data formatting, and document generation.

Curtis Chau
Technical Writer

Curtis Chau holds a Bachelor’s degree in Computer Science (Carleton University) and specializes in front-end development with expertise in Node.js, TypeScript, JavaScript, and React. Passionate about crafting intuitive and aesthetically pleasing user interfaces, Curtis enjoys working with modern frameworks and creating well-structured, visually appealing manuals.

...

Read More

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me