Odoo Help

Welcome!

This community is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.

0

how to download file from files which are uploaded by "fields.Binary()" by python code?

By
vx2008
on 7/17/16, 10:21 AM 620 views

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;

4
Nikunj Antala
On 7/18/16, 1:04 AM

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.



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"?

vx2008
on 7/18/16, 1:51 AM

is that file type of csv ?

Nikunj Antala
on 7/18/16, 2:31 AM

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

Nikunj Antala
on 7/18/16, 2:48 AM

Thank you very much, Antala,

your reply resolves my problems absolutely.

Thanks for your time, your efforts and your patience.

vx2008
on 7/18/16, 9:21 AM
0
vx2008
On 7/20/16, 10:10 PM

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?

Your Answer

Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!

About This Community

This community is for professionals and enthusiasts of our products and services. Read Guidelines

Question tools

1 follower(s)

Stats

Asked: 7/17/16, 10:21 AM
Seen: 620 times
Last updated: 7/20/16, 10:10 PM