欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python读取、修改excle openpyxl2.5 博客分类: python pythonopenpyxlexcle2007读写

程序员文章站 2024-03-24 15:12:58
...

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出来的模块名都带了版本号,之前在网上抄代码的时候经常报错,很多时候都是因为代码和模块版本不对称导致。