Search code examples
reportodooxlsxodoo-10

XLSX Report should be shown in single sheet for Odoo10


I generate xlsx report for a list of customers and my report generated according to individual customer wise means for 4 customers 4 sheets generated. But, I want a single sheet for multiple customers list.

my code and screenshots are here:

from odoo.addons.report_xlsx.report.report_xlsx import ReportXlsx

class PartnerXlsx(ReportXlsx):
    def generate_xlsx_report(self, workbook, data, partners):
        for obj in partners:
            report_name = obj.name
            print("REPRTTTTTTT", report_name, report_name[:31])
            # One sheet by partner
            sheet = workbook.add_worksheet(report_name[:31])
            bold = workbook.add_format({'bold': True})
            sheet.write(0, 0, obj.name, bold)
            sheet.write(0, 1, obj.email, bold)
            sheet.write(0, 2, obj.telephone, bold)
PartnerXlsx('report.res.partner.xlsx', 'res.partner')

Now: 5 sheets generated for 5 customers enter image description here

Requirement: One sheet for all user enter image description here


Solution

  • Try below code:

    from odoo.addons.report_xlsx.report.report_xlsx import ReportXlsx
    
    class PartnerXlsx(ReportXlsx):
       def generate_xlsx_report(self, workbook, data, partners):
           sheet = workbook.add_worksheet(report_name[:31])
           counter = 0
           for obj in partners:
              report_name = obj.name
               print("REPRTTTTTTT", report_name, report_name[:31])
              # One sheet by partner
    
                bold = workbook.add_format({'bold': True})
                sheet.write(counter, 0, obj.name, bold)
                sheet.write(counter, 1, obj.email, bold)
                sheet.write(counter, 2, obj.telephone, bold)
                counter = counter + 1
    PartnerXlsx('report.res.partner.xlsx', 'res.partner')