odoo 导入 .xlsx sale_order, purchase_order
odoo import .xlsx sale_order, purchase_order
我在这里要做的是将 .xlsx 文件导入 sale_order
下面的代码解释了我是如何使用 csv.DictReader() 做到这一点的。为了让它在 .xlsx 文件上工作,我发现 XLS to Dict Reader using 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)
Edit: i did use that function XLSDictReader
:
> archive = XLSDictReader(open(file_path))
and I got this error 'import.purchase.order' object has no attribute 'fileno'
一直在用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)
我在这里要做的是将 .xlsx 文件导入 sale_order
下面的代码解释了我是如何使用 csv.DictReader() 做到这一点的。为了让它在 .xlsx 文件上工作,我发现 XLS to Dict Reader using 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)
Edit: i did use that function
XLSDictReader
:
> archive = XLSDictReader(open(file_path))
and I got this error
'import.purchase.order' object has no attribute 'fileno'
一直在用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)