`
lizhiyu211
  • 浏览: 225559 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

python读取、修改excle openpyxl2.5

阅读更多

python小白玩脚本日记:

被python代码的简洁、易用、好上手打动,最近处理问题比较喜欢python。

语言是正经语言,只是解决异常、错误时候网上资料不是很丰满,经常会因一些小问题耽误时间。

相信也会有人遇到类似问题,这才捡起来了N年没维护的空间,给路人留下参考内容。

闲话少叙,hualili的分割线开始正题

-----------------------******************————————————————————————-------=======

需求:有业务部门经常会有不完整的EXCLE数据,需要我们来补充,重复过高且无技术含量的工作IT男不喜欢,写个功能给对方又涉及数据保密,好吧 ,自己写个省心的小脚本。

第一反应当然是找现成的模块导入,锁定了xlrd (1.1.0)+xlwt (1.3.0)+xlutils (2.0.0)

网上down了现成的代码搞了许久,终于调通。

what?!只能处理xls结尾的excle,你可知excle2007开始已经使用了xlsx,看来白研究了。

继续问度娘,锲而不舍的寻找让我发现了新的模块openpyxl (2.5.0b1),问题得以解决。

 

贴代码前介绍下excle结构,代码也是按这个顺序定位数据的:

由大到小 工作簿(workbook)-工作表(sheet)-单元格(cell)

 

# -*- coding: utf-8 -*-
# author lzy
# 2018年1月19日
from openpyxl import load_workbook
from conOracle import cxOracle


#获取数据库连接 铺垫 
conn = cxOracle('user_name','password','linkname')
sql = "SELECT code,name FROM table1 WHERE code IS NOT NULL"
rs = conn.Query(sql)
d = {}
for k, v in rs:
    d[k]=v

#excle处理
wb = load_workbook("E:\python_test\excle_rw\ceshi.xlsx")  #加载已存在EXCLE
ws=wb.worksheets[0]    #找到对应sheet页 此处根据index寻找 
for i in range(2,ws.max_row+1): #excle包含表头 从第二行开始遍历
    ws.cell(row=i,column=5).value = d[ws.cell(row=i,column=2).value] 根据第2列的值去字典中查找value更新第五列
wb.save("E:\python_test\excle_rw\ceshi.xlsx")  #保存EXCLE

 

 

 

大家有发现没,文章里pao出来的模块名都带了版本号,之前在网上抄代码的时候经常报错,很多时候都是因为代码和模块版本不对称导致。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics