diff --git a/report_xlsx/README.rst b/report_xlsx/README.rst
new file mode 100644
index 00000000..215ef82f
--- /dev/null
+++ b/report_xlsx/README.rst
@@ -0,0 +1,89 @@
+.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
+ :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
+ :alt: License: AGPL-3
+
+================
+Base report xlsx
+================
+
+This module provides a basic report class to generate xlsx report.
+
+Installation
+============
+
+Make sure you have ``xlsxwriter`` Python module installed::
+
+$ pip install xlsxwriter
+
+Usage
+=====
+
+An example of XLSX report for partners:
+
+A python class ::
+
+ from openerp.addons.report_xlsx.report.report_xlsx import ReportXlsx
+
+ class partner_xlsx(ReportXlsx):
+
+ def generate_xlsx_report(self, workbook, data, partners):
+ for obj in partners:
+ report_name = obj.name
+ # One sheet by partner
+ sheet = workbook.add_worksheet(report_name[:31])
+ bold = workbook.add_format({'bold': True})
+ sheet.write(0, 0, obj.name, bold)
+
+
+ partner_xlsx('report.res.partner.xlsx',
+ 'res.partner')
+
+To manipulate the ``workbook`` and ``sheet`` objects, refer to the
+`documentation `_ of ``xlsxwriter``.
+
+A report XML record ::
+
+
+
+.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
+ :alt: Try me on Runbot
+ :target: https://runbot.odoo-community.org/runbot/143/8.0
+
+Bug Tracker
+===========
+
+Bugs are tracked on `GitHub Issues `_.
+In case of trouble, please check there if your issue has already been reported.
+If you spotted it first, help us smashing it by providing a detailed and welcomed feedback
+`here `_.
+
+Credits
+=======
+
+* Icon taken from http://www.icons101.com/icon/id_67712/setid_2096/Boxed_Metal_by_Martin/xlsx.
+
+Contributors
+------------
+
+* Adrien Peiffer
+
+Maintainer
+----------
+
+.. image:: https://odoo-community.org/logo.png
+ :alt: Odoo Community Association
+ :target: https://odoo-community.org
+
+This module is maintained by the OCA.
+
+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.
+
+To contribute to this module, please visit https://odoo-community.org.
diff --git a/report_xlsx/__init__.py b/report_xlsx/__init__.py
new file mode 100644
index 00000000..9a384baf
--- /dev/null
+++ b/report_xlsx/__init__.py
@@ -0,0 +1,5 @@
+# -*- coding: utf-8 -*-
+# Copyright 2015 ACSONE SA/NV ()
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+from . import models
+from . import report
diff --git a/report_xlsx/__openerp__.py b/report_xlsx/__openerp__.py
new file mode 100644
index 00000000..f6576b3a
--- /dev/null
+++ b/report_xlsx/__openerp__.py
@@ -0,0 +1,19 @@
+# -*- coding: utf-8 -*-
+# Copyright 2015 ACSONE SA/NV ()
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+{
+ 'name': "Base report xlsx",
+
+ 'summary': """
+ Base module to create xlsx report""",
+ 'author': 'ACSONE SA/NV,'
+ 'Odoo Community Association (OCA)',
+ 'website': "http://acsone.eu",
+ 'category': 'Reporting',
+ 'version': '8.0.1.0.0',
+ 'license': 'AGPL-3',
+ 'external_dependencies': {'python': ['xlsxwriter']},
+ 'depends': [
+ 'base',
+ ],
+}
diff --git a/report_xlsx/models/__init__.py b/report_xlsx/models/__init__.py
new file mode 100644
index 00000000..521aa82b
--- /dev/null
+++ b/report_xlsx/models/__init__.py
@@ -0,0 +1,5 @@
+# -*- coding: utf-8 -*-
+# Copyright 2015 ACSONE SA/NV ()
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).+
+
+from . import ir_report
diff --git a/report_xlsx/models/ir_report.py b/report_xlsx/models/ir_report.py
new file mode 100644
index 00000000..e3793ae6
--- /dev/null
+++ b/report_xlsx/models/ir_report.py
@@ -0,0 +1,11 @@
+# -*- coding: utf-8 -*-
+# Copyright 2015 ACSONE SA/NV ()
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from openerp import fields, models
+
+
+class IrActionsReportXml(models.Model):
+ _inherit = 'ir.actions.report.xml'
+
+ report_type = fields.Selection(selection_add=[("xlsx", "xlsx")])
diff --git a/report_xlsx/report/__init__.py b/report_xlsx/report/__init__.py
new file mode 100644
index 00000000..37c50512
--- /dev/null
+++ b/report_xlsx/report/__init__.py
@@ -0,0 +1,4 @@
+# -*- coding: utf-8 -*-
+# Copyright 2015 ACSONE SA/NV ()
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+from . import report_xlsx
diff --git a/report_xlsx/report/report_xlsx.py b/report_xlsx/report/report_xlsx.py
new file mode 100644
index 00000000..285c97b5
--- /dev/null
+++ b/report_xlsx/report/report_xlsx.py
@@ -0,0 +1,45 @@
+# -*- coding: utf-8 -*-
+# Copyright 2015 ACSONE SA/NV ()
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+from cStringIO import StringIO
+
+from openerp.report.report_sxw import report_sxw
+from openerp.api import Environment
+
+import logging
+_logger = logging.getLogger(__name__)
+
+try:
+ import xlsxwriter
+except ImportError:
+ _logger.debug('Can not import xlsxwriter`.')
+
+
+class ReportXlsx(report_sxw):
+
+ def create(self, cr, uid, ids, data, context=None):
+ self.env = Environment(cr, uid, context)
+ report_obj = self.env['ir.actions.report.xml']
+ report = report_obj.search([('report_name', '=', self.name[7:])])
+ if report.ids:
+ self.title = report.name
+ if report.report_type == 'xlsx':
+ return self.create_xlsx_report(ids, data, report)
+ return super(ReportXlsx, self).create(cr, uid, ids, data, context)
+
+ def create_xlsx_report(self, ids, data, report):
+ self.parser_instance = self.parser(
+ self.env.cr, self.env.uid, self.name2, self.env.context)
+ objs = self.getObjects(
+ self.env.cr, self.env.uid, ids, self.env.context)
+ self.parser_instance.set_context(objs, data, ids, 'xlsx')
+ file_data = StringIO()
+ workbook = xlsxwriter.Workbook(file_data)
+ self.generate_xlsx_report(workbook, data, objs)
+ workbook.close()
+ file_data.seek(0)
+ return (file_data.read(), 'xlsx')
+
+ def generate_xlsx_report(self, workbook, data, objs):
+ raise NotImplementedError()
diff --git a/report_xlsx/static/description/icon.png b/report_xlsx/static/description/icon.png
new file mode 100644
index 00000000..baab9a4c
Binary files /dev/null and b/report_xlsx/static/description/icon.png differ
diff --git a/requirements.txt b/requirements.txt
index d074946c..a2a85aad 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1 +1 @@
-xlwt
\ No newline at end of file
+xlwt
xlsxwriter
\ No newline at end of file