odoo从tree视图导出excel表
- 视图
<button type="button" class="layui-btn layui-btn-sm export" url="/fm1212/export/business_record">
导出
</button>
- 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
});
- 在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