python - 如何在不使用向导的情况下从表单 View 打印 Excel 文件

标签 python odoo odoo-10 xls xlwt

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

Code

# -*- 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',
          }

最佳答案

目标更改为当前或仅从返回中删除 key ,因为当前是默认值。

关于python - 如何在不使用向导的情况下从表单 View 打印 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49852474/

相关文章:

Odoo 制造拣货 - 显示数量大于零的批处理 0

python - 错误 : "External ID not found in the system" in OpenERP

odoo - 如何在 Odoo 中所有 PDF 页面的 Qweb 报告中添加水印图像?

Python Pandas 数据透视表如何处理 '\xc2\xa0' ?

python - Flask-Babel 不会翻译 Web 项目中的任何内容

python - OpenERP树形结构缩进和颜色

python - 如何在 Odoo 中从产品模板属性行创建产品变体?

odoo - 更改表单 View Odoo 上的日期格式

python - 动态子类化 Enum 基类

python - pyCharm 未解析的引用语法突出显示