如何在 odoo 9 中读取 excel 文件
How read excel file in odoo 9
我在 excel 文件中有数据。如何逐行读取该文件并将数据插入数据库?也许添加上传控件并在 .py 文件中单击按钮后逐行读取。
例如:
1 约翰斯特恩
2 迈克·霍克斯
3 朱莉娅·麦克斯
有例子吗?
第一次,您需要确定您希望使用什么包来读取您的 excel 文件。
我找到了这个网站(http://www.python-excel.org/),你可以找到python包的小列表。
在我的例子中,我使用了 openpyxl
import openpyxl
from openerp import models, fields, api, _
from tempfile import TemporaryFile
class ExcelReader(models.TransientModel):
_name="reader_excel"
excel_file = fields.Binary(string='Excel File')
def import_excel(self):
# Generating of the excel file to be read by openpyxl
file = self.excel_file.decode('base64')
excel_fileobj = TemporaryFile('wb+')
excel_fileobj.write(file)
excel_fileobj.seek(0)
# Create workbook
workbook = openpyxl.load_workbook(excel_fileobj, data_only=True)
# Get the first sheet of excel file
sheet = workbook[workbook.get_sheet_names()[0]]
# Iteration on each rows in excel
for row in sheet.rows:
# Get value
v1 = row[0].value
v2 = row[1].value
v3 = row[2].value
# Create your record
self.env['your_model'].creaate({'val1':v1,'val2':v2, 'val3':v3'})
这是一个小例子。你需要适应你的情况。
我在 excel 文件中有数据。如何逐行读取该文件并将数据插入数据库?也许添加上传控件并在 .py 文件中单击按钮后逐行读取。
例如:
1 约翰斯特恩
2 迈克·霍克斯
3 朱莉娅·麦克斯
有例子吗?
第一次,您需要确定您希望使用什么包来读取您的 excel 文件。
我找到了这个网站(http://www.python-excel.org/),你可以找到python包的小列表。
在我的例子中,我使用了 openpyxl
import openpyxl
from openerp import models, fields, api, _
from tempfile import TemporaryFile
class ExcelReader(models.TransientModel):
_name="reader_excel"
excel_file = fields.Binary(string='Excel File')
def import_excel(self):
# Generating of the excel file to be read by openpyxl
file = self.excel_file.decode('base64')
excel_fileobj = TemporaryFile('wb+')
excel_fileobj.write(file)
excel_fileobj.seek(0)
# Create workbook
workbook = openpyxl.load_workbook(excel_fileobj, data_only=True)
# Get the first sheet of excel file
sheet = workbook[workbook.get_sheet_names()[0]]
# Iteration on each rows in excel
for row in sheet.rows:
# Get value
v1 = row[0].value
v2 = row[1].value
v3 = row[2].value
# Create your record
self.env['your_model'].creaate({'val1':v1,'val2':v2, 'val3':v3'})
这是一个小例子。你需要适应你的情况。