Как изменить тип содержимого с CSV на XLSX

Мой текущий код отлично печатает данные моего файла в CSV, однако мне нужно, чтобы эти данные были в формате XLSX.

Кто-нибудь знает, как я могу сделать это, не изменяя мой код слишком сильно, вот что у меня сейчас есть :

Views.py

# Starting CSV
    response = HttpResponse(content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename="' + complexName + '"Age Analysis.csv"'
    writer = csv.writer(response)
    writer.writerow(['Prepared By : Atout(PTY) ltd'])
    writer.writerow(['Customer Age Analysis for Monthly Customers as at 31/10/21'])
    writer.writerow(
        ['Account', ' ', ' ', '120+ Days', '90 Days', '60 Days', '30 days', 'Current', 'Total', '', 'Name', 'E-mail'])

    for x in ageSelect:
        writer.writerow([
            x["Account"], '*', ' ',
            '0',
            '0 ',
            '0',
            '0',
            x["Balance"],
            x["Balance"],
            '',
            x["Name"],
            x["E-mail"]
        ])

    for x in XtotalCurent:
        writer.writerow(['Totals:', ' ', ' ', '120 Days', '90 Days', '60 Days', '30 days', x, x])
        writer.writerow(['PERCENTAGE :', ' ', ' ', '120 Days', '90 Days', '60 Days', '30 days', 'Current', '100%'])
        writer.writerow(['GRAND TOTAL :', ' ', ' ', '', '', '', '', '', x])

    return response

Ошибка при использовании xlsx writer :

AttributeError at /accConnect/AgeAnalysisCSV/12 'NoneType' object has нет атрибута 'group'

Код при использовании xlsx writer:

# Starting CSV
    output = StringIO()
    workbook = xlsxwriter.Workbook(output)
    worksheet = workbook.add_worksheet()

    worksheet.write_row('Prepared By : Atout(PTY) ltd')
    worksheet.write_row('Customer Age Analysis for Monthly Customers as at 31/10/21')
    worksheet.write_row(
        'Account', ' ', ' ', '120+ Days', '90 Days', '60 Days', '30 days', 'Current', 'Total', '', 'Name', 'E-mail')

    for x in ageSelect:
        worksheet.write_row(
            x["Account"], '*', ' ',
            '0',
            '0 ',
            '0',
            '0',
            x["Balance"],
            x["Balance"],
            '',
            x["Name"],
            x["E-mail"]
        )

    for x in XtotalCurent:
        worksheet.write_row('Totals:', ' ', ' ', '120 Days', '90 Days', '60 Days', '30 days', x, x)
        worksheet.write_row('PERCENTAGE :', ' ', ' ', '120 Days', '90 Days', '60 Days', '30 days', 'Current', '100%')
        worksheet.write_row('GRAND TOTAL :', ' ', ' ', '', '', '', '', '', x)

    workbook.close()

    response = HttpResponse(content_type='application/vnd.ms-excel')
    response['Content-Disposition'] = 'attachment; filename="' + complexName + '"Age Analysis.xlsx"'
    response.write(output.getvalue())

    return response
Вернуться на верх