How templates work
A template is a standard .xlsx Excel file with special markers called placeholders. When you generate a report, ReportForge replaces each placeholder with data from your CSV file. Everything else in the template — formatting, formulas, layout, merged cells — is preserved exactly as you designed it.
Placeholder syntax
Placeholders use double curly braces: {{column_name}}. They match CSV column headers (case-insensitive).
- Valid characters: letters, numbers, underscores
- Must start with a letter or underscore
Examples:
{{company_name}}{{total_revenue}}{{report_date}}
Place them in any cell where you want data inserted.
Row ranges
For repeating data (like line items in an invoice), use row range markers. Place {{#row_start}} in a cell above your data row, and {{#row_end}} in a cell below it. The rows between these markers are duplicated once for each row in your CSV data. All formatting on the template row is preserved on every generated row.
Place row range markers in their own cells — they are removed from the output.
Multi-sheet templates
Placeholders can appear on any sheet in the workbook. Each sheet is processed independently. Row ranges on different sheets operate independently — they do not need to have the same number of data rows.
Supported Excel features
| Feature | Status |
|---|---|
| Cell values | ✓ |
Number formatting (e.g. $#,##0.00) |
✓ |
| Date formatting | ✓ |
| Text formatting (bold, italic, colors) | ✓ |
| Named ranges | ✓ |
| Multiple worksheets | ✓ |
| Formulas (preserved as-is) | ✓ |
| Merged cells (outside row ranges) | ✓ |
Unsupported features
| Feature | Status |
|---|---|
| Headers/footers | ✗ |
| Charts and pivot tables | ✗ |
| Macros and VBA (preserved but not executed) | ✗ |
| Conditional formatting in row ranges | ✗ |
.xls legacy format (save as .xlsx) |
✗ |
.xlsm macro-enabled format |
✗ |
| Password-protected files | ✗ |
If your file is password-protected, remove the password in Excel (File → Info → Protect Workbook → Encrypt with Password → clear the password) before importing.
Best practices
- Test with a small CSV file first (5–10 rows) before running a full dataset.
- Use descriptive placeholder names that match your CSV headers exactly.
- Avoid merged cells inside row ranges.
- Keep templates simple — complex layouts are harder to debug.
- Store your original template separately — ReportForge makes a managed copy on import.