【分享】excel表格上传处理与生成下载
-
公司要把以前的excel表格上传到OE的数据库中,还要要求能够导出来,忙了一个多月,现在终于有点眉目了,特分享给大家
要把excel表格传到OE中显示,首先是要在OE中生成一个form视图,用来对应excel表格的数据,要想做出格式对应excel表格的视图,请参考我之前帖子:<br / [检测到链接无效,已移除] br /> [检测到链接无效,已移除]
然后就是上传了,经@乌鲁木齐-兰迪提示,建立一个模型,其中一个字段是binary即可,具体教程:
http://www.cnblogs.com/chjbbs/p/3543025.html
然后在form视图中调用该字段即可,局部编码:
.py文件:_columns = {<br /> 'excel': fields.binary('excel', filters='*.xls'),<br /> 'month_smtqc_statistical_table':fields.char( u'月份',size=64,select=True),<br /> }
.xml文件: <form string="上传表单" version="7.0"><br /> <group><br /> <field name="month_smtqc_statistical_table"/><br /> <field name="excel"/><br /> </group>
效果图见附件。
调用和处理该上传的excel表格的教程: [检测到链接无效,已移除]
另做了个实验,用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文件在内存里就能打开操作。
<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 />
如果想生成excel文件并下载(参考下载翻译那个wizard一样,两个state: choose, get, 然后利用binary field,提供给用户下载的连接出来):<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 />