代码之家  ›  专栏  ›  技术社区  ›  vbt

如何在不使用向导的情况下从窗体视图打印excel文件

  •  2
  • vbt  · 技术社区  · 6 年前

    我需要在不使用向导的情况下从表单视图打印excel文件。问题是当按下 generate_bt ,相同的表单视图显示为一个方框。

    密码

    # -*- coding: utf-8 -*-
    
    from odoo import models, fields, api
    from odoo.tools.translate import _
    from odoo.exceptions import UserError, AccessError
    from datetime import datetime, timedelta
    import dateutil.parser
    import base64
    import xlwt
    from cStringIO import StringIO
    from pprint import pprint
    import logging
    from openerp import tools
    _logger = logging.getLogger(__name__)
    
    
    class SerialNumberXls(models.Model):
        _inherit = 'stock.picking'
        excel_file = fields.Binary(string='Download Report Excel',readonly="1")
        file_name = fields.Char(string='Excel File',readonly="1")
    
        def generate_bt(self):
            workbook= xlwt.Workbook(encoding="UTF-8")
            filename='SerialNumbers.xls'
            sheet= workbook.add_sheet('Serial Number',cell_overwrite_ok=True)
            style = xlwt.easyxf('font:name Arial,height 200;')
            style2 = xlwt.easyxf('font:name Arial,height 200,bold True;align: horiz center, vert center;')
            style_filter = xlwt.easyxf('font:name Arial; align: horiz center, vert center;')
            style_normal_left = xlwt.easyxf('font:name Arial; align: horiz left, vert center;')
            style_normal_right = xlwt.easyxf('font:name Arial; align: horiz right, vert center;')
            row = 0
            col = 0
    
            for line in self.move_lines:
                print "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE"
                for product in line.quant_ids:
                    print "SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS"
                    col = 0
                    product_id = product.product_id and product.product_id.name or False
                    sl_no = product.lot_id and product.lot_id.name or False
                    sheet.write(row,col,product_id,style)
                    col = col + 1
                    sheet.write(row,col,sl_no,style)
                    row = row + 1
    
            fp = StringIO()
            workbook.save(fp)
            excel_file = base64.encodestring(fp.getvalue())
            self.excel_file = excel_file
            self.file_name =filename
            fp.close()  
    
            return {
              'view_type': 'form',
              "view_mode": 'form',
              'res_model': 'stock.picking',
              'res_id': self.id,
              'type': 'ir.actions.act_window',
              }
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   CZoellner    6 年前

    改变 target current 或者从你的报税表上取下钥匙,因为 现在的 是默认值。