Отчет XLSX должен быть показан на одном листе для Odoo10 - PullRequest
0 голосов
/ 17 ноября 2018

Я создаю отчет xlsx для списка клиентов, и мой отчет генерируется в соответствии с индивидуальными подходами для 4 клиентов, сгенерировано 4 листа. Но я хочу один лист для списка нескольких клиентов.

мой код и скриншоты здесь:

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')

Сейчас: 5 листов, сгенерированных для 5 клиентов enter image description here

Требование: один лист для всех пользователей enter image description here

1 Ответ

0 голосов
/ 17 ноября 2018

Попробуйте код ниже:

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')
...