This question has been flagged

I generate XLSX file using xlsxwriter module and downloaded after generated, but what I need is to save the xlsx file in the attachment? #odoo 15


Avatar
Discard
Author

Thank you Jainesh,

I couldn't reply to your answer because of this stupid Karma. So your answer was helpful and inspired me to find the solution, but it will not work on Python 3, the following code is worked on Python 3:


from io import BytesIO

import base64

import xlsxwriter


        output = BytesIO()

        file_name = "%s.xlsx” % your_file_name

        workbook = xlsxwriter.Workbook(output)


        //your code here


        self.env['ir.attachment'].create({

            'name': file_name,

            'type': 'binary',

            'datas': datas,

            'store_fname': file_name,

            'res_model': model_name,

            'res_id': res_id,

            'mimetype': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'

        })





Best Answer

Hello Saleh Algarni

Hope this code block will work for you.

Please find code in Comment. 

Thanks & Regards,
Email: odoo@aktivsoftware.com
Skype: kalpeshmaheshwari

Avatar
Discard

from cStringIO import StringIO
import base64

workbook = xlsxwriter.Workbook('demo.xlsx')
worksheet = workbook.add_worksheet()
worksheet.set_column('A:A', 20)

# Code for XLSX

fp = StringIO()
workbook.save(fp)
fp.seek(0)
datas = base64.encodestring(fp.read())
file_name = "demo.xlsx"
attachment_data = {
'name':file_name,
'datas_fname':file_name,
'datas':datas,
'res_model':"modelname",
}
self.env['ir.attachment'].create(attachment_data)