python excel vlookup_excel_vlookup函数_python代码实现

python入门经典视频系列教程(免费,2K超清,送书)

895802-20191001104147015-765770986.png

# -*- coding: utf-8 -*-

"""

原创作者Toby,qq:231469242

Spyder Editor

excel字段覆盖

参数8个:

两个excel名字

两个sheet名字

4个字段名字

"""

import openpyxl

from openpyxl.cell import get_column_letter,column_index_from_string

#两个excel名字

excel_name1='test.xlsx'

excel_name2='database.xlsx'

#两个表格名字

sheet_name1="Sheet1"

sheet_name2="Sheet1"

wb1=openpyxl.load_workbook(excel_name1)

wb2=openpyxl.load_workbook(excel_name2)

#两个表格名字

sheet=wb1.get_sheet_by_name(sheet_name1)

database=wb2.get_sheet_by_name(sheet_name2)

#四个字段参数

#sheet

columnname="C" #共同字段

columnvalue="E" #表格需要更新字段

#database

columnname1="B" #共同字段

columnvalue1="C" #数据库值字段

start=1

sheet_columnvalue_index=column_index_from_string(columnvalue)

sheet_columnvalue_list=sheet.columns[sheet_columnvalue_index-1]

sheet_columname_index=column_index_from_string(columnname)

sheet_columnname_list=sheet.columns[sheet_columname_index-1]

#根据索引字母,返回列的值,用列表存储

def Column_list(letter,thesheet):

value_list=[]

column_index=column_index_from_string(letter)

cell_list=thesheet.columns[column_index-1]

for cellObj in cell_list[start:]: #console显示不全前面内容,出现第一项不是第一个

#print(cellObj.value)

value_list.append(cellObj.value)

return value_list

#数据库的名字和值列表

database_name_list=Column_list(columnname1,database)

database_value_list=Column_list(columnvalue1,database)

#合并database名字和值,生成词典

combine_list=zip(database_name_list,database_value_list)

database_dict=dict(combine_list)

#sheet的名字和值列表

sheet_name_list=Column_list(columnname,sheet)

sheet_value_list=Column_list(columnvalue,sheet)

for i in range(1,len(sheet_columnvalue_list)):

cell=sheet_columnvalue_list[i]

cell1=sheet_columnname_list[i]

#print ("cell:",cell)

#print ("cell1:",cell1)

#如果sheet更新字段的cell值为None,且索引名字在数据库

if cell.value==None and cell1.value in database_name_list:

value=database_dict[cell1.value]

sheet_columnvalue_list[i].value=value #写入查询的值

wb1.save(excel_name1)

wb2.save(excel_name2)

895802-20190915201403419-1992003855.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值