Odoo批量导出数据 - xiaohao0576/odoo-doc GitHub Wiki

使用Web界面导出数据

Odoo 17官方文档

Youtube视频讲解

使用Python代码导出数据

Odoo的Model有一个函数def export_data(self, fields_to_export),专门是用来批量导出数据的,上面的网页后台导出,调用的也是这个函数,查看源代码

此函数的参数,是一个字段名的列表,此列表可以提前使用Web后台,保存成字段模板,在导出界面保存,以备代码中重复调用,字段模板保存在ir.exportsir.exports.line中,使用以下代码取出事先保存的字段模板

def fields_list(export_id):
    export = request.env['ir.exports'].browse([export_id]).read()[0]
    export_fields_list = request.env['ir.exports.line'].browse(export['export_fields']).read()
    return [f['name'] for f in export_fields_list])

以上代码参考出处,查看源码

获得字段列表后,按以下方法批量导出数据

  1. 搜索过滤需要导出的数据,比如orders = env['sale.order'].search([('state','=','sale')],limit=80)
  2. 导出数据为python列表, orders.export_data(fields_list).get('datas',[]),导出的字段值全部是字符串
  3. 导出数据后,可以做变化、运算,生成报表等

export_data函数字段列表格式

  • 数据库id,字段名称为 .id,比如 .id, product.id
  • xmlID,字段名是id,比如 product/id
  • 联表查询时,使用 / 分割字段

使用Web API,POST请求下载Excel数据

使用POST请求/web/export/xlsx,可以下载Excel文件的数据,查看源码

使用POST请求/web/export/csv,可以下载csv格式的数据,查看源码

请求方法为POST,数据格式是json,需要的参数有'model', 'fields', 'ids', 'domain', 'import_compat', 查看源码