设为首页 收藏本站
查看: 1964|回复: 0

[经验分享] python操作excel

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-5-22 09:23:56 | 显示全部楼层 |阅读模式
.获取excel文档内容blue.xlsx内容:

wKioL1N8biPg6P1-AAHnb-XnDas958.jpg
1
2
3
4
5
6
7
8
9
# encoding : utf-8
import xlrd
xlsfile = r'/soft2/nba/blue.xlsx'
data = xlrd.open_workbook(xlsfile)
table = data.sheet_by_name(u'Sheet2')
nrows = table.nrows
print nrows
for i in range(nrows):
        print table.row_values(i)



打印结果:
[u'Server', u'S_18.21', u'S_18.22', u'S_18.31', u'S_18.32', u'Server', u'S_19.31', u'S_19.32', u'S_19.41', u'S_19.42', u'Server', u'S_19.43', u'S_19.81', u'S_19.82']
[u'/', 0.8, 0.76, 0.8, 0.73, u'/', 0.83, 0.77, 0.89, 0.71, u'/', 0.88, 0.89, 0.6]
[u'/backup', 0.98, 0.26, 0.8, 0.8, u'/backup', 0.7, 0.77, 0.66, 0.82, u'/backup', 0.32, 0.67, 0.33]
……



2.需求很简单:把其它部门整理好的EXCEL文件中的数据,获取出来映射到数据库里去。这里使用了第三包 xlrd 来处理excel。
mms.xlsx内容:
wKioL1N8bquQCojKAAGbnRSyM34191.jpg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#coding:utf-8
import xlrd
ass ={'100.0':20,'101.0':21,'102.0':22,'103.0':23,'104.0':24,'105.0':25,'106.0':26,'107.0':27,'108.0':28,'109.0':29,'110.0':30,'111.0':31,'112.0':32,'113.0':33}
gss ={'101.0':21,'102.0':22,'103.0':23,'104.0':24,'105.0':25,'106.0':26,'107.0':27,'108.0':28,'109.0':29,'110.0':30,'111.0':31,'112.0':32,'113.0':33,'114.0':34}
#SQL = 'update 业绩表 set `ass[a]` = %d,`score` = %d where `raw` = %d limit 1;'
wb = xlrd.open_workbook('/soft2/nba/mms.xlsx')
wb.sheet_names()
sh = wb.sheet_by_name(u'Sheet1')

sqlfile = open('/soft1/wb.sql','a')
totalsql = 0

ids = sh.col_values(0)

for k,v in enumerate(ids):
        if isinstance(v,int) or isinstance(v,float):
                v = int(v)
                a = sh.cell(k,2).value
                g = sh.cell(k,3).value
                a = str(a)
                g = str(g)
                SQL = 'update 业绩表 set `id` = %d,`score` = %d where `raw` = %d limit 1;'
                if a!='':

                        #编码转换(中文问题)
                        a = a.encode('gbk')
                        g = g.encode('gbk')
                        #print('%s-->%d-->%s-->%d--%d'%(a,ass[a],g,gss[g],v))
                        sql = SQL%(ass[a],gss[g],v)
                        totalsql = totalsql + 1
                        print(sql)
                        #写入文件
                        sqlfile.writelines(sql)
                        sqlfile.flush()

sqlfile.close()

print ('程序运行完毕,一共产生了%d条有效SQL。'%(totalsql))



打印结果:

wKiom1N8b2Oj8ZEUAARayjPoGlc718.jpg

以上在读取excel文件时,如果有多个文件,可以考虑使用线程来处理。

先返回所目录下的所有excel文件:

excel_dir = 'D:/tuan_team_back/'
excel_file_array =  []
#返回目录里的excel文件
#os.listdir(excel_dir)
for i in os.listdir(excel_dir):
    f = excel_dir+i
    if os.path.isfile(f):
        t = os.path.splitext(f)[1]
        if t in ['.xls','.xlsx','.xlsm','.xltx','.xlsb']:
            excel_file_array.append(f)
            
print(excel_file_array)




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-19446-1-1.html 上篇帖子: mysql一键编译安装脚本 下篇帖子: python 多线程实现定期更新ip库 python excel
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表