#python-3.x #base64 #export-to-csv #export-to-excel #odoo-13
#python-3.x #base64 #экспорт в csv #экспорт в Excel #odoo-13
Вопрос:
Я получил эту ошибку при создании файла Excel и файла csv. Ошибка отображается в строке purchase_id = self.env['purchase.excel.extended'].create(attach_files)
. Как я могу решить проблему?
Ниже приведен мой код:
for data in datas:
record = ';'.join(data)
output.write(record)
output.write("n")
data = base64.b64encode(bytes(output.getvalue(),"utf-8"))
print('data', data)
if platform.system() == 'Linux':
excel_file1 = ('/tmp/Purchase Report-' str(datetime.today().date()) '.xls')
csv_file1 = ('/tmp/Purchase Report-' str(datetime.today().date()) '.csv')
else:
excel_file1 = ('Purchase Report-' str(datetime.today().date()) '.xls')
csv_file1 = ('Purchase Report-' str(datetime.today().date()) '.csv')
excel_file1 = excel_file1.split('/')[2]
csv_file1 = csv_file1.split('/')[2]
workbook.save(excel_file1)
fp = open(excel_file1, "rb")
file_data = fp.read()
out = base64.encodestring(file_data)
# Files actions
attach_files = {
'excel_file': excel_file1,
'file_name': out,
'csv_file': csv_file1,
'file_names': data,
}
print(attach_files, 'attach_files')
purchase_id = self.env['purchase.excel.extended'].create(attach_files)
fp.close()
return {
'type': 'ir.actions.act_window',
'res_model': 'purchase.excel.extended',
'res_id': purchase_id,
'view_mode': 'form',
'context': self.env.context,
'target': 'new',
}
Комментарии:
1. Какую ошибку вы получили? Пожалуйста, отредактируйте свой вопрос и вставьте ошибку обратной трассировки в вопрос, как если бы это был код
Ответ №1:
Я думаю, что у вас поменялись местами имя файла Excel и содержимое файла Excel. Аналогично с файлом CSV.
attach_files = {
'excel_file': excel_file1,
'file_name': out,
'csv_file': csv_file1,
'file_names': data,
}
Должно быть:
attach_files = {
'excel_file': out,
'file_name': excel_file1,
'csv_file': data,
'file_names': csv_file1,
}
Комментарии:
1. Большое вам спасибо за вашу большую помощь. Это действительно работает
2. @TomMike: нет проблем. Если вы довольны тем, что этот ответ правильный, пожалуйста, рассмотрите возможность голосования и пометьте его как принятый.