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

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

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

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

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



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



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



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



  • [quote author=dw250100785 link=topic=16432.msg28157#msg28157 date=1402296569]<br />完整模仿好那个翻译导入导出 ,可以完美解决类似问题<br />[/quote]<br /><br />说过了几遍,他不听



  • [quote author=ccdos link=topic=16432.msg28158#msg28158 date=1402296965]<br />[quote author=dw250100785 link=topic=16432.msg28157#msg28157 date=1402296569]<br />完整模仿好那个翻译导入导出 ,可以完美解决类似问题<br />[/quote]<br /><br />说过了几遍,他不听<br />[/quote]<br /><br />我真的看了好几遍啊好几遍,真的还没有看懂。。目前有解决方案可以用就暂时用了现在的,翻译导入导出我还会再看,直到看懂为止。。



  • 上传的excel文件在内存里就能打开操作。<br /><br />[code]<br /><br />for wiz in self.browse(cr,uid,ids):<br />            if not wiz.excel: continue<br />            excel = xlrd.open_workbook(file_contents=base64.decodestring(wiz.excel))<br />            sh = excel.sheet_by_index(0)<br />            for rx in range(sh.nrows):<br />                print 'processing line ', rx<br />...<br /><br />[/code]<br /><br />如果想生成excel文件并下载(参考下载翻译那个wizard一样,两个state: choose, get, 然后利用binary field,提供给用户下载的连接出来):<br /><br />[code]<br /><br />#.....从数据库取数据,计算,blahblah<br /><br />        book = xlwt.Workbook(encoding='utf-8')<br />        sheet = book.add_sheet(u'统计')<br /><br />        buf=cStringIO.StringIO()<br />        book.save(buf)<br />        <br />        out=base64.encodestring(buf.getvalue())<br />        <br />        self.write(cr, uid, ids, {'state':'get', 'data':out, 'name':this.name }, context=context)<br /><br /><br />[/code]


登录后回复
 

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