A build-to-order Odoo module that exports list views and report data to native .xlsx with real image thumbnails embedded directly in the cells — no Base64 strings, no broken links. ECOSIRE scopes, builds, installs, and supports it for you. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $149.00 USD; request a quote for a scoped proposal.

A build-to-order Odoo module that exports list views and report data to native .xlsx with real image thumbnails embedded directly in the cells — no Base64 strings, no broken links. ECOSIRE scopes, builds, installs, and supports it for you.
No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.
Catalog and inventory teams live in Excel when they share data outside Odoo — with suppliers, buyers, marketplaces, and auditors. But the moment images matter, Odoo's native export breaks down. The standard list export dumps binary image_1920 / image_128 fields as enormous Base64 text strings (or omits them entirely), so a product sheet meant to show 300 thumbnails arrives as unreadable character soup. QWeb PDF reports embed images beautifully but aren't editable, and the built-in XLSX exporter (report_xlsx style output) writes plain text and numbers only. There is no supported path in Odoo core to get an actual picture sitting inside cell B2.
Real image thumbnails inserted into cells via xlsxwriter insert_image() with per-cell anchoring, x/y scale, and object positioning — never Base64 text dumps
Server-side decode of Odoo binary fields (image_1920, image_128, custom binary) and Pillow resize to a configurable thumbnail dimension for small, fast workbooks
Per-model export profile config object controlling column selection, order, headers, number/date formats, column widths and row heights to fit images
List-view integration via a Server Action / ir.actions.act_window menu so users export the exact filtered, sorted, multi-selected record set they see
Works across product.template, product.product, res.partner and any custom models.Model — image field and columns are mapped per profile, not hardcoded
Honors the acting user's record rules, domain filters and multi-company rules — exports only rows the user is entitled to read
We build a dedicated export engine that closes that gap. It reads Odoo binary image fields through the ORM, decodes them server-side, resizes them to a configurable thumbnail dimension with Pillow, and streams them into a real .xlsx workbook using xlsxwriter's insert_image() so each thumbnail is anchored, scaled, and clipped to its row. The exporter is driven by a per-model export profile (stored in a config model with ir.model.access.csv rules) that lets you choose which fields become columns, their order, headers, number/date formatting, column widths, and row height to fit the image. It hangs off a Server Action / list-view "Export to Excel (with images)" menu entry, so managers select filtered records in any tree view — product.template, res.partner, or a custom model — and pull exactly the visible, filtered set. Under the hood it respects the same domain, record rules, and multi-company access the user already has, so nobody exports rows they can't see.
Because every business asks for something specific — a supplier price list with logo watermarks, a stock report grouped by category with cost columns hidden by role, a marketplace feed with SKU + barcode + main image — we deliver this as a scoped module, not a rigid off-the-shelf download. During the scoping call we confirm which models and fields you need, whether the export runs interactively or as a scheduled ir.cron job emailing a workbook, branded header/footer templates, and whether you're on Odoo 17.0, 18.0, or 19.0 (Community or Enterprise). We then build against your exact version and data, test it on a staging copy of your database, and hand over clean, documented source in your own git repository. Typical delivery is 2–4 weeks from confirmed scope. Nothing is auto-downloaded and nothing is generic — it is engineered, installed, and supported by ECOSIRE for your instance.
Maintains thousands of product.template records and constantly shares visual product sheets with buyers, marketplaces and print teams. Needs SKU, price and a real thumbnail side by side in an editable Excel file, not a Base64 string or a locked PDF.
Runs stock and valuation reports filtered by location or category and needs to circulate them with product images so pickers and auditors can visually confirm items. Wants the exact filtered list exported with images and cost columns gated by role.
Sends branded price lists and RFQ packs to vendors. Needs a header/footer-branded workbook with product image, supplier reference and pricing, ideally on a scheduled ir.cron drop to a recipient list.
Owns the instance and must keep it upgrade-safe. Wants a clean module with pinned dependencies, ir.model.access.csv security, no core monkey-patching, and a git handover they can maintain across 17/18/19 upgrades.
Buy the license on ecosire.com and download the Excel Export with Embedded Images module ZIP from your account dashboard.
Extract the ZIP into your Odoo custom addons folder on the server (or upload via Apps > Install from file on Odoo.sh / runbot).
Activate Developer Mode, open Apps, click Update Apps List, search for Excel Export with Embedded Images, and press Install.
Open the new menu, paste your ECOSIRE license key, connect any external credentials (Shopify, Amazon, Stripe, etc.), and save.
Run the built-in connection test, sync your first 10 records, and schedule the recurring cron. Contact support if anything fails.
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Image handling | Real thumbnails embedded in cells via insert_image() | Possible but you build the Pillow/xlsxwriter pipeline yourself | Often exports Base64 text or a URL, not a real picture | |
| Version & edition fit | Built against your exact 17/18/19, Community or Enterprise | Whatever your team targets and maintains | One build; may lag your version or edition | |
| Scope match | Your models, columns, formatting and branding by design | Fully bespoke but all effort is on you | Fixed feature set; you adapt to it | |
| Security model | ir.model.access.csv + record rules, runs as acting user | Correct only if your devs implement it | Varies; access controls often minimal | |
| Automation | Optional ir.cron scheduled email export in scope | Build the cron yourself | Rarely includes scheduled delivery | |
| Support & upgrades | Post-go-live window + optional retainer for version bumps | Your team owns all maintenance | Vendor support quality varies; upgrade timing not guaranteed | |
| Ownership | Full git repo handover — you own the source | You own it | Licensed module; source may be obfuscated | |
| Delivery | 2–4 weeks build-to-order, tested on staging + rollback | Depends on internal backlog and skills | Instant download but generic and unverified on your data |
Odoo's native list export writes binary image fields as raw Base64 text (or drops them), and the standard XLSX exporter only outputs text and numbers. This module decodes the image server-side, resizes it, and inserts a real picture into the cell with xlsxwriter's insert_image() — an editable spreadsheet where the thumbnail actually appears, anchored and scaled to the row.
This is a build-to-order module, not an instant apps.odoo.com download. Typical delivery is 2–4 weeks from confirmed scope. The timeline starts once we agree the target models, columns, image fields, branding and your Odoo version on the scoping call. Nothing auto-downloads — we build, test on staging, and install it for you.
Odoo 17.0, 18.0 and 19.0, on both Community and Enterprise. We build against your exact version so the ORM, view and reporting APIs match. If you later upgrade, we handle the version bump as part of a support engagement since it's your own maintained source.
Every build includes a post-go-live support window for defect fixes and questions. Because you receive the full git repository, you own the code and can maintain it in-house or keep it on a support/retainer arrangement with ECOSIRE — including version upgrades and new model/column additions as your needs grow.
Any model. The exporter is driven by a per-model profile, so it works with product.template, res.partner or any custom models.Model that has a binary image field. During scoping we map the models, columns and image fields you need — nothing is hardcoded to products.
Yes. Exports run as the acting user, so record rules, domain filters and multi-company rules are enforced — users only export rows they can already read. Who may run or configure exports is controlled via ir.model.access.csv and optional record rules defined during the build.
Yes, where it's in scope. We can wire an ir.cron scheduled action that renders the workbook and emails it to a recipient list on a recurring cadence — useful for weekly supplier price lists or stock reports — in addition to the on-demand list-view export.
A build-to-order Odoo module that exports list views and report data to native .xlsx with real image thumbnails embedded directly in the cells — no Base64 strings, no broken links. ECOSIRE scopes, builds, installs, and supports it for you.