Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
ff191da
rename module
luc-demeyer Apr 12, 2018
fd8c9a1
xlsx formats
luc-demeyer Aug 5, 2018
1f28c3b
improved error handling
luc-demeyer Aug 9, 2018
7d3322a
autodetect boolean type
luc-demeyer Aug 10, 2018
5c20b3b
pylint: disable=old-api7-method-defined
luc-demeyer Aug 10, 2018
35bd867
pylint: disable=old-api7-method-defined
luc-demeyer Aug 10, 2018
4850fd3
pylint W8112(eval-referenced)
luc-demeyer Aug 10, 2018
5273961
pylint eval-used
luc-demeyer Aug 10, 2018
d3925f2
add unit test
luc-demeyer Aug 12, 2018
6667a16
[UPD] Update report_xlsx_helper.pot
oca-travis Aug 14, 2018
ef4a97c
[11.0][MIG] report_xlsx_helper: Migration to 11.0
luc-demeyer Sep 24, 2018
fd5efcd
add todo
luc-demeyer Sep 26, 2018
11aeace
[UPD] Update report_xlsx_helper.pot
oca-travis Oct 1, 2018
2057679
[UPD] README.rst
OCA-git-bot Oct 2, 2018
0b73672
[10.0][FIX]fix _render for cell formats
luc-demeyer Nov 4, 2018
516c25f
[MIG] : Migration to 12.0
luc-demeyer Apr 21, 2019
ff80e45
[UPD] README.rst
OCA-git-bot Jun 3, 2019
98aa16d
[UPD] Update report_xlsx_helper.pot
oca-travis Jun 3, 2019
e05ff69
[UPD] README.rst
OCA-git-bot Jul 31, 2019
e0474de
date to datetime conversion when autotyping
luc-demeyer Aug 7, 2019
18e4c8f
greenify
luc-demeyer Aug 8, 2019
76b3f65
increase test coverage
luc-demeyer Aug 10, 2019
544158a
[UPD] Update report_xlsx_helper.pot
oca-travis Oct 1, 2019
6a71a1a
report_xlsx_helper 12.0.1.1.0
OCA-git-bot Oct 1, 2019
e64d18c
FIX error message when cellvalue's type is not recognized
ivantodorovich Sep 6, 2019
1d22b8b
report_xlsx_helper 12.0.1.1.1
OCA-git-bot Oct 10, 2019
0e7af21
[IMP] report_xlsx_helper: black, isort
kongrattapong Jan 9, 2020
e0de371
[MIG] report_xlsx_helper: Migration to 13.0
kongrattapong Jan 9, 2020
976e72a
[UPD] Update report_xlsx_helper.pot
oca-travis Feb 19, 2020
3ef6446
[UPD] README.rst
OCA-git-bot Feb 19, 2020
36609dd
report_xlsx_helper 13.0.1.0.1
OCA-git-bot Feb 19, 2020
651927c
[12.0][ENH] report_xlsx_helper : dynamic function _write_line
Saran440 Jan 22, 2020
3a0badc
greenify
luc-demeyer Feb 20, 2020
55b76dd
[UPD] README.rst
OCA-git-bot Feb 21, 2020
0ecc485
report_xlsx_helper 13.0.1.1.0
OCA-git-bot Feb 21, 2020
b194eb3
[14.0][MIG] report_xlsx_helper
Saran440 Nov 19, 2020
265e975
[IMP] format xlsx to global files
Saran440 Nov 19, 2020
11aad5e
[UPD] Update report_xlsx_helper.pot
oca-travis Dec 2, 2020
c2b9d01
[FIX] report_xlsx_helper: force Libreoffice to recompute formulas
StefanRijnhart Feb 9, 2021
ac120ea
Added translation using Weblate (Spanish)
anasuarez1 Mar 16, 2021
4296b15
Translated using Weblate (Spanish)
anasuarez1 Mar 16, 2021
892dcb5
report_xlsx_helper 14.0.1.0.1
OCA-git-bot Nov 8, 2021
731e9c6
[IMP] report_xlsx_helper: black, isort, prettier
sinerkiaid Jan 19, 2022
96979c3
[MIG] report_xlsx_helper: Migration to 15.0
sinerkiaid Jan 19, 2022
7baafb0
[UPD] Update report_xlsx_helper.pot
Feb 20, 2022
ad3754a
[UPD] README.rst
OCA-git-bot Feb 20, 2022
3825342
[FIX]report_xlsx_helper: Development status mature
manuelregidor Apr 13, 2022
785d9a0
[UPD] README.rst
OCA-git-bot Apr 13, 2022
647cc08
report_xlsx_helper 15.0.1.0.1
OCA-git-bot Apr 13, 2022
6d38e00
Added translation using Weblate (Catalan)
jabelchi Jun 15, 2022
0581337
Translated using Weblate (Catalan)
jabelchi Jun 15, 2022
bfb16bc
[MIG] report_xlsx_helper: Migration to 16.0
RodrigoBM Oct 6, 2022
5521717
[UPD] Update report_xlsx_helper.pot
Dec 5, 2022
b75574c
[UPD] README.rst
OCA-git-bot Dec 5, 2022
53785a3
Update translation files
weblate Dec 5, 2022
bd36562
Translated using Weblate (Spanish)
Ivorra78 Jul 18, 2023
a5aa3e7
Translated using Weblate (Spanish)
Ivorra78 Aug 23, 2023
ad986c0
[UPD] README.rst
OCA-git-bot Sep 3, 2023
4881684
Update translation files
weblate Oct 10, 2023
f618f90
Translated using Weblate (Spanish)
Ivorra78 Oct 15, 2023
97e8882
[IMP] report_xlsx_helper: pre-commit auto fixes
FernandoRomera Dec 20, 2023
ccb2b4e
[17.0][MIG] report_xlsx_helper: Migration to 17.0
FernandoRomera Dec 20, 2023
8dfc028
[UPD] Update report_xlsx_helper.pot
Jan 23, 2024
5da17ca
[BOT] post-merge updates
OCA-git-bot Jan 23, 2024
09202b7
Added translation using Weblate (Italian)
mymage Feb 5, 2024
677800c
Translated using Weblate (Italian)
mymage Feb 12, 2024
3056803
[FIX] *: line too long
pedrobaeza May 2, 2024
3516db7
[BOT] post-merge updates
OCA-git-bot May 2, 2024
e8fb061
Added translation using Weblate (French)
Nov 8, 2024
108108a
[IMP] report_xlsx_helper: pre-commit fixes
alexis-via Jan 3, 2025
3987c5f
[MIG] report_xlsx_helper: migrate from v17 to v18
alexis-via Jan 3, 2025
a6b9079
[UPD] Update report_xlsx_helper.pot
Feb 10, 2025
30c607f
[BOT] post-merge updates
OCA-git-bot Feb 10, 2025
11943dc
Added translation using Weblate (Turkish)
bo-eska Sep 8, 2025
f2ddd05
Translated using Weblate (Turkish)
bo-eska Sep 8, 2025
d953077
[MIG] report_xlsx_helper: Migration to 19.0
sergioM-S73 Nov 7, 2025
11868d2
Merge PR #1087 into 19.0
OCA-git-bot Nov 26, 2025
651d7da
[UPD] Update report_xlsx_helper.pot
Nov 26, 2025
83adf76
[BOT] post-merge updates
OCA-git-bot Nov 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ addon | version | maintainers | summary
--- | --- | --- | ---
[report_qweb_element_page_visibility](report_qweb_element_page_visibility/) | 19.0.1.0.0 | | Report Qweb Element Page Visibility
[report_xlsx](report_xlsx/) | 19.0.1.0.2 | | Base module to create xlsx report
[report_xlsx_helper](report_xlsx_helper/) | 19.0.1.0.0 | | Report xlsx helpers
[report_xml](report_xml/) | 19.0.1.0.0 | | Allow to generate XML reports

[//]: # (end addons)
Expand Down
135 changes: 135 additions & 0 deletions report_xlsx_helper/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association

===================
Report xlsx helpers
===================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:e5ea9a89476b9adec8dbccb5f6c4b8da7c7b83c1582bbdcf9001e1f282e04ec0
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Mature-brightgreen.png
:target: https://odoo-community.org/page/development-status
:alt: Mature
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Freporting--engine-lightgray.png?logo=github
:target: https://github.com/OCA/reporting-engine/tree/19.0/report_xlsx_helper
:alt: OCA/reporting-engine
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/reporting-engine-19-0/reporting-engine-19-0-report_xlsx_helper
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/reporting-engine&target_branch=19.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module provides a set of tools to facilitate the creation of excel
reports with format xlsx.

**Table of contents**

.. contents::
:local:

Installation
============

This module requires report_xlsx version 13.0.1.0.0 or higher.

Usage
=====

In order to create an Excel report you can define a report of type
'xlsx' in a static or dynamic way:

- Static syntax: cf. ``account_move_line_report_xls`` for an example.
- Dynamic syntax: cf. ``report_xlsx_helper_demo`` for an example

The ``AbstractReportXlsx`` class contains a number of attributes and
methods to facilitate the creation excel reports in Odoo.

- Cell types

string, number, boolean, datetime.

- Cell formats

The predefined cell formats result in a consistent look and feel of
the Odoo Excel reports.

- Cell formulas

Cell formulas can be easily added with the help of the
``_rowcol_to_cell()`` method.

- Excel templates

It is possible to define Excel templates which can be adapted by
'inherited' modules. Download the ``account_move_line_report_xls``
module from http://apps.odoo.com as example.

- Excel with multiple sheets

Download the ``account_asset_management_xls`` module from
http://apps.odoo.com as example.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/reporting-engine/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/reporting-engine/issues/new?body=module:%20report_xlsx_helper%0Aversion:%2019.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* Noviat

Contributors
------------

- Luc De Meyer <luc.demeyer@noviat.com>

- Rattapong Chokmasermkul <rattapongc@ecosoft.co.th>

- Saran Lim. <saranl@ecosoft.co.th>

- `Sinerkia Innovación y Desarrollo S.L. <https://www.sinerkia.com>`__:

- Luis Pomar

- `Studio73 <https://www.studio73.es>`__:

- Sergio Martínez <sergio.martinez@studio73.es>

Maintainers
-----------

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

This module is part of the `OCA/reporting-engine <https://github.com/OCA/reporting-engine/tree/19.0/report_xlsx_helper>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
3 changes: 3 additions & 0 deletions report_xlsx_helper/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from . import controllers
from . import models
from . import report
14 changes: 14 additions & 0 deletions report_xlsx_helper/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Copyright 2009-2019 Noviat.
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

{
"name": "Report xlsx helpers",
"author": "Noviat, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/reporting-engine",
"category": "Reporting",
"version": "19.0.1.0.0",
"license": "AGPL-3",
"depends": ["report_xlsx"],
"development_status": "Mature",
"installable": True,
}
1 change: 1 addition & 0 deletions report_xlsx_helper/controllers/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import main
50 changes: 50 additions & 0 deletions report_xlsx_helper/controllers/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Copyright 2009-2018 Noviat.
# License AGPL-3.0 or later (https://www.gnuorg/licenses/agpl.html).

import json

from odoo.http import content_disposition, request, route

from odoo.addons.report_xlsx.controllers.main import ReportController


class ReportController(ReportController):
@route(
[
"/report/<converter>/<reportname>",
"/report/<converter>/<reportname>/<docids>",
],
type="http",
auth="user",
website=True,
)
def report_routes(self, reportname, docids=None, converter=None, **data):
report = request.env["ir.actions.report"]._get_report_from_name(reportname)
if converter == "xlsx" and not report:
context = dict(request.env.context)
if docids:
docids = [int(i) for i in docids.split(",")]
if data.get("options"):
data.update(json.loads(data.pop("options")))
if data.get("context"):
data["context"] = json.loads(data["context"])
context.update(data["context"])
context["report_name"] = reportname

xlsx = report.with_context(**context)._render_xlsx(
reportname, docids, data=data
)[0]
report_file = context.get("report_file")
if not report_file:
active_model = context.get("active_model", "export")
report_file = active_model.replace(".", "_")
xlsxhttpheaders = [
(
"Content-Type",
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
),
("Content-Length", len(xlsx)),
("Content-Disposition", content_disposition(report_file + ".xlsx")),
]
return request.make_response(xlsx, headers=xlsxhttpheaders)
return super().report_routes(reportname, docids, converter, **data)
129 changes: 129 additions & 0 deletions report_xlsx_helper/i18n/ca.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * report_xlsx_helper
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2022-06-15 18:05+0000\n"
"Last-Translator: jabelchi <jabelchi@gmail.com>\n"
"Language-Team: none\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.3.2\n"

#. module: report_xlsx_helper
#. odoo-python
#: code:addons/report_xlsx_helper/report/report_xlsx_abstract.py:0
#, python-format
msgid ""
"%(__name__)s, _write_line : programming error detected while processing "
"col_specs_section %(col_specs_section)s, column %(col)s"
msgstr ""
"%(__name__)s, _write_line : error de programació detectat en processar "
"col_specs_section %(col_specs_section)s, columna %(col)s"

#. module: report_xlsx_helper
#. odoo-python
#: code:addons/report_xlsx_helper/models/ir_actions_report.py:0
#, python-format
msgid "%s model was not found"
msgstr "No s'ha trobat el model %s"

#. module: report_xlsx_helper
#. odoo-python
#: code:addons/report_xlsx_helper/report/report_xlsx_abstract.py:0
#, python-format
msgid ", cellvalue %s"
msgstr ""

#. module: report_xlsx_helper
#: model:ir.model,name:report_xlsx_helper.model_report_report_xlsx_abstract
#, fuzzy
msgid "Abstract XLSX Report"
msgstr "Informe XLSX abstracte"

#. module: report_xlsx_helper
#. odoo-python
#: code:addons/report_xlsx_helper/report/report_xlsx_abstract.py:0
#, python-format
msgid ""
"Programming Error:\n"
"\n"
"Excel Sheet name '%(name)s' contains unsupported special characters: "
"'%(special_chars)s'."
msgstr ""
"Error de programació:\n"
"\n"
"El full Excel amb nom '%(name)s' contè caràcters especials no soportats: "
"'%(special_chars)s'."

#. module: report_xlsx_helper
#. odoo-python
#: code:addons/report_xlsx_helper/report/report_xlsx_abstract.py:0
#, python-format
msgid ""
"Programming Error:\n"
"\n"
"Excel Sheet name '%(name)s' should not exceed %(max_chars)s characters."
msgstr ""
"Error de programació:\n"
"\n"
"El full d'Excel de nom '%(name)s' no hauria d'excedir els %(max_chars)s "
"caràcters."

#. module: report_xlsx_helper
#. odoo-python
#: code:addons/report_xlsx_helper/report/report_xlsx_abstract.py:0
#, python-format
msgid ""
"Programming Error:\n"
"\n"
"The '%s' column is not defined in the worksheet column specifications."
msgstr ""
"Error de programació:\n"
"\n"
"La columna '%s' no està definida a les especificacions de columna del full "
"de càlcul."

#. module: report_xlsx_helper
#. odoo-python
#: code:addons/report_xlsx_helper/report/report_xlsx_abstract.py:0
#, python-format
msgid ""
"Programming Error:\n"
"\n"
"The '%s' column is not defined the worksheet column specifications."
msgstr ""
"Error de programació:\n"
"\n"
"La columna '%s' no està definida a les especificacions de columna del full "
"de càlcul."

#. module: report_xlsx_helper
#. odoo-python
#: code:addons/report_xlsx_helper/report/report_xlsx_abstract.py:0
#, python-format
msgid ""
"Programming Error:\n"
"\n"
"The 'title' parameter is mandatory when calling the '_write_ws_title' method."
msgstr ""
"Error de programació:\n"
"\n"
"El paràmetre 'títol' és obligatori si es crida el mètode '_write_ws_title'."

#. module: report_xlsx_helper
#: model:ir.model,name:report_xlsx_helper.model_ir_actions_report
msgid "Report Action"
msgstr "Acció d'informe"

#. module: report_xlsx_helper
#: model:ir.model,name:report_xlsx_helper.model_report_report_xlsx_helper_test_partner_xlsx
#, fuzzy
msgid "Test Partner XLSX Report"
msgstr "Informe XLSX partner prova"
Loading