2017-03-20 12 views
0

詳細については、xlsファイルをダウンロードする方法についての説明が必要です。 Odoo8では、ウィザードでxlwtを使ってxlsファイルを作成し、関数wb.save(filename)を使ってファイルシステムに格納します。 しかし、多くのグーグルでは、私は必要なものを手に入れることができません。私は本当に動揺しています... 正しい方法で私を助けてくれる人がいますか?xlsファイルをOdoo8にダウンロードするには?

答えて

0

xlsファイルをダウンロードするのに最適な例です。

ステップ1:通常のモデル(ウィザード)内にメソッドを作成し、URLを返します。

@api.multi 
def get_file(self): 
    return { 
      'type' : 'ir.actions.act_url', 
      'url': '/web/binary/download_document?model=wizard.product.stock.report&field=datas&id=%s&filename=product_stock.xls'%(self.id), 
      'target': 'self', 
}     

ステップ2(ちょうどファイルのように、あなたは/web/controllers/main.pyで見ることができる):コントローラクラスを作成し、そのURLをキャッチし、Excelファイル、ダウンロードするための処理を行います。

from openerp import http 
    from openerp.http import request 
    from openerp.addons.web.controllers.main import serialize_exception,content_disposition 
    import base64 
    class Binary(http.Controller): 
    @http.route('/web/binary/download_document', type='http', auth="public") 
    @serialize_exception 
    def download_document(self,model,field,id,filename=None, **kw): 
     """ Download link for files stored as binary fields. 
     :param str model: name of the model to fetch the binary from 
     :param str field: binary field 
     :param str id: id of the record from which to fetch the binary 
     :param str filename: field holding the file's name, if any 
     :returns: :class:`werkzeug.wrappers.Response` 
     """ 
     Model = request.registry[model] 
     cr, uid, context = request.cr, request.uid, request.context 
     fields = [field] 
     res = Model.read(cr, uid, [int(id)], fields, context)[0] 
     filecontent = base64.b64decode(res.get(field) or '') 
     if not filecontent: 
      return request.not_found() 
     else: 
      if not filename: 
       filename = '%s_%s' % (model.replace('.', '_'), id) 
       return request.make_response(filecontent, 
           [('Content-Type', 'application/octet-stream'), 
           ('Content-Disposition', content_disposition(filename))])  

上記の方法では、私はURLからIDを取得してから計算を適用し、要求からhttp応答を返します。どのような値をウィザードからコントローラメソッドに渡しても、私はそれらをコントローラメソッドで取得し、そのコントローラメソッドでは必要な処理を行い、ファイルを直接返します。

URLから私はモデル、フィールド、IDとファイル名を合格した、以下を参照してください/web/binary/download_document?model=wizard.product.stock.report &フィールド= &件のデータID =%sの&ファイル名= product_stock.xls

http://www.emiprotechnologies.com/technical_notes/odoo-technical-notes-59/post/how-to-download-any-file-on-button-click-244

任意のファイルTXT、あなたはXLS、CSVファイルを作成することができる方法の上に使用。

ありがとうございます。

+0

あなたの回答にはリンクを貼り付けないでください。リンクがもはや有効でない場合はどうなりますか?これは順番にあなたの答えを無効にするでしょう... – Goralight

+1

さて、次回私はあなたに適切な例で答えるでしょう。 –

関連する問題