Why mail merge ruins formatting, and how to fix it

You spend an hour setting up a document template, link it to your spreadsheet, and hit generate. The resulting documents have American dates instead of British ones, your currency symbols have vanished, a long name has pushed your signature block onto the wrong page, and half your placeholders are still sitting there untouched in brackets.

Formatting failures are the most common frustration when generating documents in bulk. The root cause is almost always the same: Microsoft Word and your spreadsheet program look at your data differently. Word sees raw text, while Excel applies display layers that hide the underlying values.

Here is why your formatting breaks during document generation, and the exact steps to fix each problem.

"My dates come out as 3/14/2026 instead of 14 March 2026"

When you type a date into Excel, it gets stored as a serial number and then dressed up for the screen. If your cell says "14 March 2026", the underlying data might just be "45730". When a mail merge pulls data from that spreadsheet, it grabs the raw, unformatted value. Word then tries to guess the format, often defaulting to standard US date layouts regardless of your regional settings.

If you are using Word's built-in mail merge, you fix this by right-clicking the merge field, selecting "Toggle Field Codes", and manually typing a picture switch like \@ "dd MMMM yyyy" into the code.

If you are using a browser-based generator like ManyDocs, there is a faster, more reliable method. ManyDocs reads the exact stored value from your spreadsheet. The most robust fix is to format your date as plain text in the spreadsheet itself before you generate anything.

You can do this by converting the date with a formula in a new column. Use =TEXT(A2, "dd mmmm yyyy"), copy the results, and paste them as values over your original column. Alternatively, type an apostrophe before the date when doing manual data entry (e.g., '14 March 2026). The apostrophe tells the spreadsheet to treat the cell strictly as text, ensuring it prints exactly as you see it.

"My numbers lost their decimals, currency symbol or thousands separator"

Numbers suffer from the exact same raw-value problem as dates. If a spreadsheet cell displays "$4,500.00", the stored value is almost certainly just "4500". The dollar sign, the comma, and the trailing zeros are screen dressing. When you generate your documents, you get the naked "4500" dumped into your text.

In Word, the traditional fix involves another complex field code, such as \# "$#,##0.00".

The simpler approach is to write the permanent formatting directly into your document template, leaving the spreadsheet to provide only the core digits. For example, type the currency symbol directly into the Word document: $((amount)).

If you need the thousands separator and strict decimal places, convert the numbers to text in your spreadsheet.

What you see in Excel What is actually stored What prints in the document The reliable fix (store as text)
€4,500.00 4500 4500 '4,500.00
15.50 15.5 15.5 '15.50
00123 123 123 '00123

Remember that ManyDocs does not recalculate formulas or read cell styling. If you use an Excel formula to format these numbers, you must copy the entire column and paste it back over itself using "Paste as Values" before generating your documents.

"My fonts and styles changed"

Sometimes a replaced placeholder appears in a completely different font, or a bold styling cuts off halfway through a word. This happens because placeholders inherit the formatting of the text around them, and Word is notorious for splitting text internally.

If you type a placeholder like {{EmployeeName}}, then highlight just the word "Employee" and make it bold, Word splits that single placeholder into multiple formatting runs behind the scenes. On screen, it looks like a single piece of text. Internally, it is broken into fragments. Traditional mail merge often fails to process these broken fields, or applies the wrong style to the replacement text.

ManyDocs is built to handle this gracefully. It detects placeholders that Word has split across formatting runs and reassembles them automatically. To avoid style surprises entirely, type your placeholder in one continuous pass. Apply formatting like bold, italics, or specific fonts to the entire placeholder, including the brackets.

If you open a finished DOCX template in ManyDocs, you can use the built-in visual editor. It highlights detected values and turns them into clean, unified placeholders without you having to hand-edit Word field codes.

"Everything shifted onto the wrong page"

A template that looks perfect with a short placeholder value can break entirely when it receives a long one. If your placeholder is ((CompanyName)), it might be replaced by "Apple Inc." on row one, and "The International Brotherhood of Electrical Workers Local 47" on row two. That extra length causes text to wrap onto a new line, which pushes all subsequent paragraphs down. If you used blank lines (pressing Enter) to push a signature block to the next page, that block will suddenly split awkwardly across two pages.

Design your templates to absorb variation. Never use repeated empty paragraphs to position text at the bottom of a page. Instead, use a hard Page Break (Ctrl+Enter or Cmd+Enter) before any section that must start at the top of a new sheet.

For elements that must stay together, use Word's paragraph settings. Highlight the signature block, open Paragraph properties, and check "Keep with next" and "Keep lines together". This forces the entire block to jump to the next page cleanly if it runs out of room, rather than tearing in half.

"My table rows broke"

Placing variables inside tables is common for invoices, schedules, and forms. When a placeholder is replaced by a long string of text, Word's default behavior is to expand the table column to fit the text. This distorts your carefully planned table layout and can even push the table off the edge of the page.

To prevent this, you must lock the table dimensions in your template. Right-click the table, select "Table Properties", go to the Options button, and uncheck "Automatically resize to fit contents". Next, set a preferred width for your columns. When a long text value drops into a locked column, the text will simply wrap to a new line inside the cell, preserving the overall structure of your table.

ManyDocs fully supports placeholders inside tables, so once your column widths are fixed, your table rows will remain stable across the entire batch.

"Headers and footers were not filled in"

Standard mail merge tools often struggle to process fields located in headers and footers. These areas are technically separate "stories" within the document structure, meaning generators often skip right past them.

You do not need to do anything special to fix this if you use ManyDocs. The tool searches for the ((field)), {{field}} or [[field]] syntax everywhere in the document. Placeholders placed in headers, footers, tables, and standard headings are processed exactly the same way as body text. Just ensure the placeholder name precisely matches your spreadsheet column header.

"Blank fields left an ugly gap or a stray comma"

Not every row in your spreadsheet will have complete data. A classic example is a second address line. If your template says ((AddressLine1)), followed by a line break, and then ((AddressLine2)), a missing second line leaves an ugly blank gap in the middle of your printed address.

Similarly, an optional middle name might be formatted as ((FirstName)) ((MiddleName)) ((LastName)). If the middle name is missing, you get a double space.

In Word's native mail merge, you fix this by writing complex "If... then... else" rules. When using a straightforward generator, it is better to design the text around the possibility of missing data. Put optional data elements at the end of paragraphs rather than the middle. If a whole column is sparsely populated, consider splitting your spreadsheet into two batches: one for people with that data, and one for people without, using a slightly modified template for each.

"Some placeholders were not replaced at all"

You open your generated document, and instead of a name, you see {{ClientName}} sitting exactly as you typed it. When a generator ignores a placeholder, it is always a matching error between the template and the spreadsheet.

Run through this diagnostic checklist to find the culprit:

  • Header name mismatch: Does the column header in your spreadsheet say "Client Name" (with a space) while the template says {{ClientName}} (without a space)? They must be identical.
  • Trailing spaces: This is the most common invisible failure. If your spreadsheet header is "ClientName " (with an accidental space at the end), it will not match the placeholder. Click into the spreadsheet header cell and check the end of the word.
  • Inconsistent capitalisation: "clientname" is not the same as "ClientName". Match the case exactly.
  • Mismatched brackets: ManyDocs supports ((field)), {{field}}, and [[field]]. It does not support ((field}}. Pick one style and use it consistently.
  • Empty first row: The very first row of your spreadsheet must contain the column headers. If you left row 1 blank or used it for a large title, the generator will read the wrong row as your headers.

Before you generate 400 files

Do not upload your entire database on the first try. Run this two-minute pre-flight checklist to ensure your formatting holds up.

  1. Copy two rows from your main spreadsheet into a new, blank spreadsheet.
  2. Choose one row with very short data, and one row with the longest possible data (a long name, a massive address).
  3. Generate the documents using this two-row test sheet.
  4. Open both resulting files.
  5. Check the pagination on the long-data file, and check the dates and numbers on both.

If they look correct, you are ready to generate the full batch.

Frequently asked questions

Do I need to learn Word field codes to fix formatting?

No. While Word relies on complex field codes to format dates and numbers, you can bypass this entirely. Format your dates and numbers as plain text in your spreadsheet before generating the documents, and the generator will print exactly what it sees.

Why did my table change size when the document generated?

Word automatically expands table columns to fit the text placed inside them. If a placeholder is replaced by a very long name, the column stretches. Right-click your table in the template, go to Table Properties, and disable "Automatically resize to fit contents" to lock the layout.

Does ManyDocs work with placeholders in the header or footer?

Yes. Unlike some mail merge setups, placeholders in headers, footers, tables, and headings work identically to placeholders in the main body text. Just use your preferred bracket syntax, like {{InvoiceNumber}}.

What happens if I make part of a placeholder bold?

If you format only half of a placeholder, Word internally breaks that text into separate pieces. Many mail merge tools will fail to read it. ManyDocs automatically detects and reassembles these split placeholders, but it is best practice to apply formatting to the entire placeholder at once.