Odoo中文社区可以通过以下三个域名访问:shine-it.net , odoocn.org,odoo.net.cn

原论坛用户的基本信息和发帖这里都予以保留,请注意:原论坛用户无需重新注册新用户,但是您的密码需要重置

开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

如果您登录系统碰到问题,请在微信公众号留言:

【分享】excel表格上传处理与生成下载



  • 公司要把以前的excel表格上传到OE的数据库中,还要要求能够导出来,忙了一个多月,现在终于有点眉目了,特分享给大家
    要把excel表格传到OE中显示,首先是要在OE中生成一个form视图,用来对应excel表格的数据,要想做出格式对应excel表格的视图,请参考我之前帖子:
    http://shine-it.net/index.php/topic,16381.msg28000.html#msg28000
    [url=http://shine-it.net/index.php/topic,16381.msg28000.html#msg28000]http://shine-it.net/index.php/topic,16381.msg28000.html#msg28000[/url]
    然后就是上传了,经@乌鲁木齐-兰迪提示,建立一个模型,其中一个字段是binary即可,具体教程:
    [url=http://www.cnblogs.com/chjbbs/p/3543025.html]http://www.cnblogs.com/chjbbs/p/3543025.html[/url]
    然后在form视图中调用该字段即可,局部编码:
    .py文件:[code]_columns = {
    'excel': fields.binary('excel', filters='*.xls'),
    'month_smtqc_statistical_table':fields.char( u'月份',size=64,select=True),
    }[/code]
    .xml文件:[code]                <form string="上传表单" version="7.0">
    <group>
    <field name="month_smtqc_statistical_table"/>
    <field name="excel"/>
                                          </group>[/code]
    效果图见附件。
    调用和处理该上传的excel表格的教程:[url=http://shine-it.net/index.php/topic,8051.msg17654.html#msg17654]http://shine-it.net/index.php/topic,8051.msg17654.html#msg17654[/url]
    另做了个实验,用xled来读取xlsx格式的excel表格也没有问题。
    关于下载,[glow=red,2,300]石家庄-老刘[/glow]给的方案,在目录openerp\addons\web\static\ 下面再建个目录, 比如123, 然后在里放个文件 , 比如456.txt, 然后就可以这样访问了 http://127.0.0.1:8069/web/static/123/456.txt, 不需要身份验证, 只要知道文件名就行。 这也是一个方法。 安全性稍差
    这样把链接写到form视图里调用即可完成从服务器上下载生成好的excel表格的任务。
    至于如何把数据库中的数据导出成excel表格,这个还没找到教程,先把我会的发出来,等找到后再补发。



  • 公司要把以前的excel表格上传到OE的数据库中,还要要求能够导出来,忙了一个多月,现在终于有点眉目了,特分享给大家
    要把excel表格传到OE中显示,首先是要在OE中生成一个form视图,用来对应excel表格的数据,要想做出格式对应excel表格的视图,请参考我之前帖子:
    http://shine-it.net/index.php/topic,16381.msg28000.html#msg28000
    [url=http://shine-it.net/index.php/topic,16381.msg28000.html#msg28000]http://shine-it.net/index.php/topic,16381.msg28000.html#msg28000[/url]
    然后就是上传了,经@乌鲁木齐-兰迪提示,建立一个模型,其中一个字段是binary即可,具体教程:
    [url=http://www.cnblogs.com/chjbbs/p/3543025.html]http://www.cnblogs.com/chjbbs/p/3543025.html[/url]
    然后在form视图中调用该字段即可,局部编码:
    .py文件:[code]_columns = {
    'excel': fields.binary('excel', filters='*.xls'),
    'month_smtqc_statistical_table':fields.char( u'月份',size=64,select=True),
    }[/code]
    .xml文件:[code]                <form string="上传表单" version="7.0">
    <group>
    <field name="month_smtqc_statistical_table"/>
    <field name="excel"/>
                                          </group>[/code]
    效果图见附件。
    调用和处理该上传的excel表格的教程:[url=http://shine-it.net/index.php/topic,8051.msg17654.html#msg17654]http://shine-it.net/index.php/topic,8051.msg17654.html#msg17654[/url]
    另做了个实验,用xled来读取xlsx格式的excel表格也没有问题。
    关于下载,[glow=red,2,300]石家庄-老刘[/glow]给的方案,在目录openerp\addons\web\static\ 下面再建个目录, 比如123, 然后在里放个文件 , 比如456.txt, 然后就可以这样访问了 http://127.0.0.1:8069/web/static/123/456.txt, 不需要身份验证, 只要知道文件名就行。 这也是一个方法。 安全性稍差
    这样把链接写到form视图里调用即可完成从服务器上下载生成好的excel表格的任务。
    至于如何把数据库中的数据导出成excel表格,这个还没找到教程,先把我会的发出来,等找到后再补发。



  • 完整模仿好那个翻译导入导出 ,可以完美解决类似问题



  • [quote author=dw250100785 link=topic=16432.msg28157#msg28157 date=1402296569]
    完整模仿好那个翻译导入导出 ,可以完美解决类似问题
    [/quote]

    说过了几遍,他不听



  • [quote author=ccdos link=topic=16432.msg28158#msg28158 date=1402296965]
    [quote author=dw250100785 link=topic=16432.msg28157#msg28157 date=1402296569]
    完整模仿好那个翻译导入导出 ,可以完美解决类似问题
    [/quote]

    说过了几遍,他不听
    [/quote]

    我真的看了好几遍啊好几遍,真的还没有看懂。。目前有解决方案可以用就暂时用了现在的,翻译导入导出我还会再看,直到看懂为止。。



  • 上传的excel文件在内存里就能打开操作。

    [code]

    for wiz in self.browse(cr,uid,ids):
                if not wiz.excel: continue
                excel = xlrd.open_workbook(file_contents=base64.decodestring(wiz.excel))
                sh = excel.sheet_by_index(0)
                for rx in range(sh.nrows):
                    print 'processing line ', rx
    ...

    [/code]

    如果想生成excel文件并下载(参考下载翻译那个wizard一样,两个state: choose, get, 然后利用binary field,提供给用户下载的连接出来):

    [code]

    #.....从数据库取数据,计算,blahblah

            book = xlwt.Workbook(encoding='utf-8')
            sheet = book.add_sheet(u'统计')

            buf=cStringIO.StringIO()
            book.save(buf)
           
            out=base64.encodestring(buf.getvalue())
           
            self.write(cr, uid, ids, {'state':'get', 'data':out, 'name':this.name }, context=context)


    [/code]


登录后回复
 

与 Odoo 中文社区 的连接断开,我们正在尝试重连,请耐心等待