Ir al contenido
Menú
Se marcó esta pregunta
7 Respuestas
20669 Vistas

I want to user upload excel file by "fields.Binary()";

when the user click a certain button, this excel file will be downloaded on server; and then use "xlrd.open_workbook(filename[0])" to get the excel data and do the next doings;

Avatar
Descartar
Mejor respuesta

Hello,

Odoo already have method for download file from binary data.

    @http.route('/web/binary/saveas', type='http', auth="public")

    @serialize_exception

    def saveas(self, model, field, id=None, filename_field=None, **kw):

         -------

         -------

This method available on '/web/controllers/main.py'

You can use this method by pass parameter in url.

Example:

URL : localhost:8069/web/binary/saveas?model=ir.attachment&field=datas&filename_field=datas_fname&id=103

Using this url odoo will give you data of field datas from ir.attachment model of record id is 103.

------------------------- Code is For reading Excel file that store in Binary format--------------------------

import base64

from openerp import api, fields, models, _

from openpyxl import load_workbook

class ExcelRead(models.TransientModel):

     _name = "excel.read"

     data_file=fields.Binary('File')

     @api.one

     def import_file(self):

        data_file_p = open('/tmp/test.xlsx','w')

         data_file_p.write((base64.b64decode(self.data_file)))

         data_file_p.close()

         wb = load_workbook('test.xlsx')

         ws = wb['big_data']

         for row in ws.rows:

             for cell in row:

                 print(cell.value)


Hope this helps.



Avatar
Descartar
Autor

Thanks for your reply;

In the fact I want to get the data from the uploaded excel file of "fields.Binary()";

the code:

.....

filedata=fields.Binary();

...

Now I have uploaded an excel file to "filedata";

My question: how shall I get the the first column data of the Excel file from "filedata"?

is that file type of csv ?

Here i have update my answer and add code for read excel file that store in Binary format.

Autor

Thank you very much, Antala,

your reply resolves my problems absolutely.

Thanks for your time, your efforts and your patience.

Autor Mejor respuesta

Now I have import excel data from user's terminal and shall I write the modified data back to user's terminal as excel file?

Avatar
Descartar
Publicaciones relacionadas Respuestas Vistas Actividad
1
jul 16
14883
3
ago 24
1830
2
may 24
1879
1
mar 19
4331
2
mar 17
4637