odoo从tree视图导出excel表

odoo从tree视图导出excel表

  1. 视图
<button type="button" class="layui-btn layui-btn-sm export" url="/fm1212/export/business_record">
                    导出
                </button>
  1. js
	odoo.define('tree_buttons', function (require) {
    "use strict";

    var Widget = require('web.Widget');
    var widget_registry = require('web.widget_registry');
    var data_manager = require('web.data_manager');
    var session = require('web.session');

    var tree_buttons = Widget.extend({
        template: 'tem_tree_buttons',

        events: {
        	'click .export': function (event) {
                this.do_action({
                    'name': '导出',
                    'type': 'ir.actions.act_url',
                    'url': $(event.currentTarget).attr("url") + '?id=' + this.id,
                    'target': 'new',
                    'tfs_close': true
                })
            },
         }
          init: function (parent, options, params) {
            this._super(parent, options, params);
            this.id = options.res_id;
            this.model = options.model;
            this.data = options.data;
            this.template = params.attrs.template;
            this.record = options;
        }

    });
    widget_registry.add('tree_buttons', tree_buttons);
    return tree_buttons

});
  1. 在controllers文件夹中新建export文件
    class Exportrecord(http.Controller):
    ‘’’
    导出设置
    ‘’’
@http.route('/fm1212/export/business_record', type='http', auth='user', csrf=False)
def get_business_record(self, **kw):
    '''
    获取差旅核算记录,导出excel表
    '''
    ids = kw.get('ids', False)
    records = http.request.env['fnt_business_trip'].search([('id', 'in', json.loads(ids))])
    fields = ['标题', '提交人', '开始时间', '结束时间', '出发地', '目的地', '出差天数', '审批日期']
    workbook = xlwt.Workbook()
    worksheet = workbook.add_sheet('差旅记录')
    current_month = datetime.datetime.now().month
    for index in range(len(fields)):
        worksheet.write(0, index, fields[index])
    row_index = 1
    for record in records:
        worksheet.write(row_index, 0, record.name or '')
        worksheet.write(row_index, 1, record.create_user.name or '')
        worksheet.write(row_index, 2, str(record.start_date) or '')
        worksheet.write(row_index, 3, str(record.end_date) or '')
        worksheet.write(row_index, 4, record.trip_record.origin if len(record.trip_record) <= 1
                        else record.trip_record[0].origin or '')
        worksheet.write(row_index, 5, record.trip_record.destination if len(record.trip_record) <= 1
                        else record.trip_record[0].destination or '')

        worksheet.write(row_index, 6, record.trip_days or '')
        worksheet.write(row_index, 7, str(record.check_date) or '')
        row_index += 1
    response = http.request.make_response(None, headers=[('Content-Type', 'application/vnd.ms-excel'),
                                                         ('Content-Disposition',
                                                          'attachment; filename={filename}{month}.xls;'.format(
                                                              filename='差旅记录'.encode('utf-8').decode('latin1'),
                                                              month=str(current_month) + '月'.encode('utf-8').decode('latin1')
                                                          ))])
    workbook.save(response.stream)
    return response
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值