Excel/CSV Export Template
Formatted, multi-sheet, styled Excel/CSV exports from any model with saved layouts
Odoo's native export gives you raw, unformatted data that still needs an hour of reformatting in Excel before anyone can read it, and the layout is lost the moment you close the dialog. This module lets business users build saved export templates against any model: pick and label columns (including dotted related paths), choose value types, widths and alignment, split records into multiple sheets, and produce a styled XLSX or a clean, correctly-encoded CSV in one click. Templates are stored records, so a layout is built once and re-run forever, run against the current selection through a wizard, or scheduled to email the file to recipients on an interval. It removes the manual spreadsheet rework that eats analyst and finance time every reporting cycle.
Key Features
Saved export templates on any model
The gb.export.template record targets any ir.model and holds an ordered set of gb.export.column lines. Each column has a field path, custom header label, value type (text/number/currency/date/percent/boolean), width and alignment, so business users save a layout once and re-run it forever without touching code.
One-click column auto-population
The action_populate_columns button scans the chosen model's stored, non-technical fields and creates up to 30 ready-to-use columns with sensible value types guessed from each field. You start from a full layout in one click instead of typing field names by hand.
Styled XLSX workbooks via xlsxwriter
build_xlsx renders a presentable workbook: bold coloured header (header_bg_color/header_font_color), frozen header row, auto-filter, zebra striping and per-column number formats. The result looks finished, so it goes straight to management without manual reformatting in Excel.
Multi-sheet split by field value
Set split_by_field and _plan_sheets groups records into one worksheet per distinct value, sanitising names to Excel's 31-char limit. A single export becomes a tidy per-team, per-category or per-month workbook automatically.
Totals row with per-column sums
Tick sum_column on numeric columns and enable add_totals_row to append a bold TOTAL line that sums those columns across every record. Numeric-only validation prevents summing text, so the footer is always meaningful in both XLSX and CSV.
Clean configurable CSV output
build_csv lets you pick the delimiter (comma/semicolon/tab), quoting (minimal or quote-all) and encoding (UTF-8, UTF-8 with BOM, or Latin-1). Downstream systems import the file without broken columns or mojibake.
Dotted-path field resolution
Column read_value follows dotted paths such as partner_id.country_id.name and coerces relational records to their display name (joining multiple values). You export related data several hops away without building an intermediate view.
Run wizard against the current selection
The gb.export.run.wizard reads active_ids from the calling list view so users export exactly the records they highlighted, or fall back to the template's default domain, order_by and row limit. action_download streams the generated file as an attachment.
Scheduled email delivery via cron
A gb.export.schedule ties a template to an interval and recipient partners; the cron_run_due job picks up due schedules, generates the file and emails it via mail.mail, then advances next_run and run_count. Recurring reports land in inboxes with no one clicking export.
Use Cases
Screenshots
Run Export
Scheduled Exports
Export Templates
Why Choose This Module
Odoo's native export gives you raw, unformatted data. This module turns it into polished, reusable spreadsheets: build a saved export template against any model, pick and label columns, choose formats and widths, split into multiple sheets, and produce styled XLSX or clean CSV in one click — no code, no manual reformatting in Excel afterwards.
Specifications
- Compatible: Odoo 18.0 / 19.0
- License: OPL-1
- Languages: English
- Author: Pokutsoft
- Dependencies: base, web
- Support: support@pokutsoft.com
Update date: 2026-07-02