美文网首页
导出数据到excel表格

导出数据到excel表格

作者: 一杯海风_3163 | 来源:发表于2019-06-26 11:27 被阅读0次
    from cStringIO import StringIO
    import base64
    from datetime import date, timedelta, datetime
    
    import xlwt
    from odoo import fields, models, api
    from odoo.exceptions import ValidationError, UserError
    import datetime
    from odoo import _, api, exceptions, fields, models, tools
    
    
     def batch_export_order_excel(self,context):
            """导出退货报表"""
            domain = self._context.get('active_domain', [])
            if len(context['active_ids']) == 80:
                return_orders = self.search(domain)
            else:
                domain=[('id', 'in', context['active_ids'])]
                return_orders = self.search(domain)
            if not return_orders:
                raise UserError('数据错误')
    
    
    
            data = []
    
            for order in return_orders:
                if order.line_ids:
                    for index,line in enumerate(order.line_ids):
                        info = dict()
    
                        if index ==0:
                            info['create_date'] = order.create_date
                            info['transaction_id'] = order.sell_order_id.transaction_id
                            info['amount'] = order.sell_order_id.amount
                            info['back_money'] = order.back_money
                            info['type_id'] = order.type_id.name
                            info['currency_code'] = order.sell_order_id.currency_id.name
                            info['note'] = (order.remark or '') + (order.reason_id.name or '')
                            info['site_order_id'] = order.sell_order_id.site_order_id
                            info['warehouse_id'] = order.sell_order_id.warehouse_id.name
                            info['back_state'] = order.back_state
                            info['back_warehouse_id'] = order.warehouse_id.name
                            info['back_tracking_number'] = order.tracking_number
                            info['back_method'] = order.back_method
                            info['pay_time'] = order.sell_order_id.pay_time
                            info['send_time'] = order.sell_order_id.send_time
                            info['back_time'] = order.back_time
                            info['tracking_number'] = order.sell_order_id.tracking_number
                            info['partner_name'] = order.sell_order_id.partner_id.name
                            info['email'] = order.sell_order_id.address_id.email
                            info['recev'] = order.sell_order_id.recev
                            info['country'] = order.sell_order_id.address_id.country
                            info['sate_name'] = order.sell_order_id.address_id.state_name
                            info['store_name'] = order.sell_order_id.store_id.name
                            info['company_name'] = order.sell_order_id.company_id.name
                        info['name'] = order.name
                        info['sell_order_name'] = order.sell_order_id.name
                        info['sku'] = line.goods_id.name
                        info['number'] = line.number
                        info['cost'] = line.goods_id.cost
                        info['weight'] = line.goods_id.weight
                        info['is_second_sell'] = line.is_second_sell
                        if line.is_second_sell=='yes':
                            info['is_second_sell'] = u'能'
                        elif line.is_second_sell=='no':
                            info['is_second_sell'] = u'不能'
                        info['no_sell_reason_id'] = line.no_sell_reason_id.name or ''
                        data.append(info)
                else:
                    info = dict()
                    info['create_date'] = order.create_date
                    info['name'] = order.name
                    info['sell_order_name'] = order.sell_order_id.name
                    info['transaction_id'] = order.sell_order_id.transaction_id
                    info['amount'] = order.sell_order_id.amount
                    info['back_money'] = order.back_money
                    info['type_id'] = order.type_id.name
                    info['currency_code'] = order.sell_order_id.currency_id.name
                    info['note'] = (order.remark or '') + (order.reason_id.name or '')
                    info['site_order_id'] = order.sell_order_id.site_order_id
                    info['warehouse_id'] = order.sell_order_id.warehouse_id.name
                    info['back_state'] = order.back_state
                    info['back_warehouse_id'] = order.warehouse_id.name
                    info['back_tracking_number'] = order.tracking_number
                    info['back_method'] = order.back_method
                    info['pay_time'] = order.sell_order_id.pay_time
                    info['send_time'] = order.sell_order_id.send_time
                    info['back_time'] = order.back_time
                    info['tracking_number'] = order.sell_order_id.tracking_number
                    info['partner_name'] = order.sell_order_id.partner_id.name
                    info['email'] = order.sell_order_id.address_id.email
                    info['recev'] = order.sell_order_id.recev
                    info['country'] = order.sell_order_id.address_id.country
                    info['sate_name'] = order.sell_order_id.address_id.state_name
                    info['store_name'] = order.sell_order_id.store_id.name
                    info['company_name'] = order.sell_order_id.company_id.name
                    data.append(info)
            columns = ['制单时间', 'RMA单据ID', '订单号', '交易ID', '订单总金额', '退款金额', '币种', 'SKU', '数量', '成本', '重量','能否二次销售','影响二次销售的原因','原因大类','(备注)退回原因',
                 '平台原始单号', '发货仓库', '退回状态','退回仓库', '退回快递单号', '快递方式', '付款时间', '发货时间', '退回时间',
                 '原始快递单号', '客户姓名', '客户邮箱', '收货地址', '国家', '洲/区','店铺', '公司']
            columns_value = [
                    'create_date','name','sell_order_name','transaction_id','amount','back_money','currency_code','sku','number','cost','weight','is_second_sell','no_sell_reason_id','type_id','note',
                    'site_order_id','warehouse_id','back_state','back_warehouse_id','back_tracking_number','back_method','pay_time','send_time','back_time',
                    'tracking_number','partner_name','email','recev','country','sate_name','store_name','company_name'
            ]
            workbook = xlwt.Workbook(encoding='utf-8')
            worksheet = workbook.add_sheet('sheet1')
    
            # 表头
            hr = 3  # 表头占用的行数
            header_style = "pattern:pattern solid,fore_colour yellow; " \
                           "font:height 200, name SimSun, colour_index black, bold on;" \
                           "align: horz centre, vert center;"
            header_style = xlwt.easyxf(header_style)
            worksheet.write_merge(0, 1, 0, len(columns), '退货订单.xlsx', header_style)
    
    
            for col, col_name in enumerate(columns):
                worksheet.write(2, col, col_name)
    
            for row, line in enumerate(data):
                i = 0
                for value_name in columns_value:
                    worksheet.write(row + hr, i, line.get(value_name,''))
                    i += 1
    
            # 保存到临时文件,转储到表中,返回弹窗界面
            fp = StringIO()
            workbook.save(fp)
            export_id = self.env['download.excel'].create(
                {'excel_file': base64.encodestring(fp.getvalue()), 'file_name': '退货订单.xlsx'})
            fp.close()
            return {
                'view_mode': 'form',
                'res_model': 'download.excel',
                'res_id': export_id.id,
                'view_type': 'form',
                'type': 'ir.actions.act_window',
                'context': self._context,
                'target': 'new',
            }
    

    相关文章

      网友评论

          本文标题:导出数据到excel表格

          本文链接:https://www.haomeiwen.com/subject/huoqcctx.html