odoo import .xlsx sale_order, purchase_order - PullRequest
0 голосов
/ 08 декабря 2018

я пытаюсь здесь импортировать .xlsx в sale_order, код ниже объясняет, как я это сделал, используя csv.DictReader ().чтобы заставить его работать с файлом .xlsx, я нашел XLS для Dict Reader с использованием xlrd , и я понятия не имею, как это реализовать.

ps: я новичок в pythonи odoo 10

file_data = fields.Binary('Archive', required=True,)

def import_button(self):
    file_path = tempfile.gettempdir()+'/file.csv'
    data = self.file_data
    f = open(file_path,'wb')
    f.write(data.decode('base64'))
    f.close() 
    archive = csv.DictReader(open(file_path),delimiter=';')

    archive_lines = []
    for line in archive:
        archive_lines.append(line)

Редактировать: я использовал эту функцию XLSDictReader:

> archive = XLSDictReader(open(file_path))

, и я получил эту ошибку 'import.purchase.order' object has no attribute 'fileno'

1 Ответ

0 голосов
/ 08 декабря 2018

всегда с xlrd, спасибо мистер @Datanovice за вашу помощь

def import_button(self):
    file_path = tempfile.gettempdir()+'/file.xls'
    data = self.file_data
    f = open(file_path,'wb')
    f.write(data.decode('base64'))
    f.close() 

    workbook = xlrd.open_workbook(file_path)
    workbook = xlrd.open_workbook(file_path, on_demand = True)
    worksheet = workbook.sheet_by_index(0)
    first_row = [] # The row where we stock the name of the column
    for col in range(worksheet.ncols):
        first_row.append( worksheet.cell_value(0,col) )
    # transform the workbook to a list of dictionaries
    archive_lines = []
    for row in range(1, worksheet.nrows):
        elm = {}
        for col in range(worksheet.ncols):
            elm[first_row[col]]=worksheet.cell_value(row,col)

        archive_lines.append(elm)
...