Bulk Document Generation: The Complete Guide
You have a single document template and a spreadsheet containing three hundred rows of data. You need to produce three hundred individual, customised files. Doing this manually means opening the template, copying a row from the spreadsheet, pasting the names and details into the right places, using "Save As", and then repeating the process two hundred and ninety-nine more times.
Manual copying and pasting is slow, but its real cost is the mistakes it causes. When you overwrite an existing document, it is incredibly easy to update the client name at the top of the page but forget to change the company name on page two. The wrong details get sent to the wrong person.
Bulk document generation automates this exact process. It takes the repetitive work away, replacing a morning of manual data entry with a five-minute automated run.
How bulk generation works
The core idea is simple. You take your standard document and replace every variable piece of text with a placeholder, such as {{FirstName}} or ((Address)). You then create a spreadsheet where the first row contains header names that exactly match your placeholders.
Every row underneath that header row represents one final document. When you run a document generator, it reads your template, reads the spreadsheet, and stamps out a new, complete file for every row, replacing the placeholders with the correct data.
Three ways to generate documents
If you need to generate separate files from a spreadsheet, you generally have three options. Microsoft Word has its own built-in tools, technical users can write their own code, or you can use a browser-based generator like ManyDocs.
Here is how they compare in practice:
| Feature | Word Mail Merge | Custom Scripting (VBA) | Browser Generator (ManyDocs) |
|---|---|---|---|
| Setup time | Medium | High | Low |
| Produces separate files | No (requires a paid add-in or macro) | Yes | Yes (delivered as a ZIP) |
| Cost | Included in Office subscription | Free (if you write it yourself) | Free |
| Technical skill required | Medium | Very High | Low |
| Where your data goes | Stays on your computer | Stays on your computer | Stays on your computer (processed locally) |
Word's mail merge is powerful, but it defaults to producing one massive, combined document rather than separate files. Splitting that merged document requires running custom VBA macros or paying for third-party add-ins. A browser-based generator skips this problem by generating individual files by default.
A complete walkthrough
Here is how to take a blank Word document and a spreadsheet and turn them into a batch of completed files using ManyDocs.
1. Prepare your template
Open Microsoft Word or LibreOffice Writer and write your document. Wherever you need data from your spreadsheet to appear, type a placeholder. ManyDocs supports three styles: {{field}}, [[field]], or ((field)). Pick one style and use it consistently.
Your template might look like this:
Dear
{{FirstName}}{{LastName}},We are writing to confirm the renewal of your service agreement for the property at
{{Address}}.The new term begins on
{{RenewalDate}}at the agreed monthly rate of{{MonthlyRate}}.
Save this file as a standard .docx or .odt document. It must be under 10 MB.
2. Prepare your spreadsheet
Open Excel, LibreOffice Calc, or Google Sheets. The first row of your spreadsheet must contain the header names, and these names must exactly match the text inside your placeholders.
| FirstName | LastName | Address | RenewalDate | MonthlyRate |
|---|---|---|---|---|
| Sarah | Jenkins | 142 Westway Road | 14 March 2026 | £450.00 |
| David | Cho | 99 East Avenue | 01 April 2026 | £500.00 |
| Elena | Rostova | 7B North Street | 15 April 2026 | £425.50 |
Save this data as an .xlsx, .xls, or .ods file.
3. Generate the files
Open your browser and navigate to the ManyDocs website. You do not need to create an account or sign in.
First, select your template file. Second, select your spreadsheet.
ManyDocs will read the headers in your spreadsheet and ask you how you want to name the output files. You can choose to have them numbered sequentially (document-1.docx, document-2.docx), but it is usually much better to select a column from your spreadsheet. If you choose the LastName column, your files will come out named Jenkins.docx, Cho.docx, and Rostova.docx.
Click generate. The tool will parse your template, replace the placeholders with the values from each row, and package all the finished documents into a single ZIP file. Download the ZIP, extract it, and your work is done. All processing happens locally on your machine; your files are never uploaded to a server.
Common use cases
This setup works for any standard document that needs to be personalised for a list of people.
Certificates: Schools and training providers use this to generate hundreds of course completion certificates. You can place placeholders over background images or inside complex borders, and the formatting stays intact.
Contracts: NDAs, rental agreements, and standard employment contracts are easily generated. Because ManyDocs processes everything locally in your browser, sensitive counterparty data never leaves your machine.
Invoices: For businesses with standard monthly retainers or membership fees, you can generate a batch of simple, single-line-item invoices ready to be converted to PDF and sent to clients.
HR letters: Salary review letters, probation confirmations, and training records require total privacy. Local browser processing ensures you can safely merge employee IDs and salary figures without uploading personnel data to a cloud service.
Personalised client letters: Any formal communication where a mass email is inappropriate can be merged into heavily formatted, branded Word templates, ready for printing and posting.
Event badges: Event organisers use table layouts in Word alongside spreadsheet data to generate sheets of printable attendee badges, complete with names, roles, and company details.
Mistakes that cost time
When a bulk generation run fails, it is almost always due to the data in the spreadsheet, not the template. Check these common issues before generating a large batch.
Mismatched header names. A placeholder named {{FirstName}} will not match a spreadsheet column named First Name (with a space) or firstname (all lowercase). They must match exactly. The most common invisible error is a trailing space at the end of a header name in Excel.
Unformatted dates and numbers. ManyDocs reads the stored value from your spreadsheet, not the display format. If Excel shows "14 March 2026" but stores it internally as a serial number, the serial number will print. The safest fix is to store your dates and formatted currency amounts as text in the spreadsheet.
Formulas not converted to values. The generator does not recalculate Excel formulas. If you have a column calculating a 20% tax rate, you must copy that column and "Paste as Values" before running the generation.
Skipping the test batch. Never generate four hundred files without checking the first one. Create a test spreadsheet with just two rows of data, run the generation, open the resulting files, and check every paragraph. Fix any layout shifts or missing spaces before running the full list.
When this is the wrong tool
Bulk document generation is powerful, but it is not built for every scenario.
If you are dealing with individually negotiated documents, where entire clauses change depending on the client, standard placeholders are not enough. You need a dedicated contract lifecycle management tool.
It also struggles with conditional clauses. If you need a paragraph to appear only if a client lives in a specific country, a simple find-and-replace generator will not do that natively. You would need to build the entire conditional paragraph inside the spreadsheet cell.
Finally, do not use this method for variable line items. If one invoice requires two line items and the next requires fifteen, a simple one-row-to-one-document setup will fail. You need dedicated invoicing software that understands relationships between tables of data.
Start here
If you are ready to set up your first template, the exact method depends on your task.
If you are struggling with Word's native tools, read about how to get mail merge to produce separate files.
If you are working with specific types of data, look at our dedicated guides for preparing a spreadsheet properly, fixing dates and numbers that lose their formatting, or securely handling bulk HR and employee documents.
Frequently asked questions
Does this generate separate files or one long document?
ManyDocs generates one individual file for every row in your spreadsheet. Unlike standard Word mail merge, which produces a single continuous document separated by section breaks, ManyDocs packages all your separate files into one ZIP folder for easy downloading.
Can I name the generated files using my spreadsheet data?
Yes. Before you generate the batch, ManyDocs asks you to choose a column for the file names. If you select a column containing invoice numbers or employee names, your output files will be named using exactly those values.
Is my sensitive data uploaded to a server?
No. ManyDocs runs entirely locally inside your web browser using JavaScript. Your template and spreadsheet are read on your device, the placeholders are replaced on your device, and the ZIP file is created on your device. Nothing is uploaded or stored.
Why did my dates come out looking wrong?
Document generators read the underlying value stored in a spreadsheet cell, not the formatting Excel applies over the top. To ensure dates print exactly as you want them (e.g., "14 March 2026"), format the column as plain text and type the date exactly as it should appear.
Does it work with PDF output?
No. ManyDocs outputs finished documents in exactly the format you provided — either .docx (Word) or .odt (OpenDocument). If you need PDFs, you will need to open the generated files in Word or LibreOffice and save them as PDFs afterwards.