跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 开发与实施交流
  4. EO中处理用户提交excel,返回结果

EO中处理用户提交excel,返回结果

已定时 已固定 已锁定 已移动 Odoo 开发与实施交流
3 帖子 2 发布者 2.2k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • Q 离线
    Q 离线
    qimiaoqimiaogmail.com
    写于 最后由 编辑
    #1

    功能:用户上传excel,系统按照业务逻辑处理excel文件,结果文件返回给用户

    非常感谢mrshelly帮助,已完成功能主线,总结如下,有问题请大家多多指点  ;D

    1.上传文件在_columns里面使用fields.binary实现
    'excel': fields.binary('File', filters='*.xls'),

    2.在form view中使用button调用py中的方法,name属性对应方法名称
    <button name="import_file" string="上传" type="object"  class="oe_highlight" />

    3.在py的import_file方法中获取上传的excel文件
    this = self.browse(cr, uid, ids[0])
    data=base64.decodestring(this.excel)

    4.传递给xlrd,结合xlwt,xlutils进行自己的业务逻辑处理
    rb = open_workbook(file_contents=data, formatting_info=True, on_demand=True)
    wb = copy(rb)
    ...
    s= StringIO.StringIO()
    wb.save(s)
    return s

    5.保存处理结果到库中
    out = base64.encodestring(s.getvalue())
    self.write(cr, uid, ids, {'excel': out,...}, context=context)

    6.返回到view中的指定视图
    obj_model = self.pool.get('ir.model.data')
    model_data_ids = obj_model.search(cr,uid,[('model','=','ir.ui.view'),('name','=','your_view_id')])
    resource_id = obj_model.read(cr, uid, model_data_ids, fields=['res_id'])[0]['res_id']
    return {
                'type': 'ir.actions.act_window',
                'res_model': 'your_model',
                'view_mode': 'form',
                'view_type': 'form',
                'views': [(resource_id,'form')],
                'res_id': this.id,
                'target': 'new',
            }

    7.在view中提供下载链接给用户
    <p>打开分析结果<field name="excel"  readonly="1" filename="name"/></p>

    1 条回复 最后回复
    0
    • JoshuaJ 离线
      JoshuaJ 离线
      Joshua 管理员
      写于 最后由 编辑
      #2

      不错的方法,谢谢楼主分享。

      【上海先安科技】(joshua AT openerp.cn),欢迎关注公众号:openerp_cn

      1 条回复 最后回复
      0

      • 登录

      • 没有帐号? 注册

      • 登录或注册以进行搜索。
      • 第一个帖子
        最后一个帖子
      0
      • 版块
      • 标签
      • 热门
      • 用户
      • 群组