同一信息基于A表格查询B表格读取相关内容,在A表格相关位置填写(.XLSX)

同一信息在A表格中读取其单元格文字和其所在的行。值得注意的是list.append()只能一次装一个信息,list.extend([])一次可以填入多个信息。在这里list2填入单元格文字和所在的行,单元格文字将方便在B表格查找,所在的行将方便A表格后续写入信息。

# ==============================
wb1 = load_workbook(path1)
sheet_names1 = wb1.sheetnames  # 获取sheet的名称
ws1 = wb1[sheet_names1[0]] # 打开第一个sheet
# 获取整个列的单元格(某一列)
max_row1 = ws1.max_row # 最大行
#column1 = ws1['D3':'D%d' % max_row]
column1 = ws1['D3':'D%d' % max_row1]
for column_cells in column1:
    for cell in column_cells:
        cl1 = str(cell.value)
        cl1 = cl1.replace('*','').replace('*','') # 字符串的简单处理
        list2.extend([[cl1,cell.row]]) # 单元格文字和所在的行

同一信息在B表格读取相关内容,首先这里是遍历文件夹打开读取表格信息,list1保存单元文字和相关内容。

# ==============================
for parent, dirnames, filenames in os.walk(path):
    for n in filenames: # 遍历SHEET
        if not n.startswith('~$'):
            if n.endswith('.xlsx'): # 查找文件.lxsx
                # ==============================
                print('正在执行:',n)
                n0 = (os.path.join(parent, n))
                wb = load_workbook(n0)  # 打开相关表
                sheet_names = wb.sheetnames  # 获取sheet的名称
                ws = wb[sheet_names[0]]
                # ==============================
                # 获取整个列的单元格(某一列)
                max_row = ws.max_row
                column = ws['D9':'D%d' % max_row]
                # 获取某一列对应的所有单元格对象
                for column_cells in column:
                    for cell in column_cells:
                        cl = str(cell.value)
                        if cl != 'None':
                           for i in list2:
                               if i[0] == cl:
                                   rc1 = ws['G%d' % cell.row].value
                                   rc2 = ws['H%d' % cell.row].value
                                   list1.extend([[i[0],rc1,rc2,n]])

list1[0]和list2[0]都是同一信息,相同的单元格文字,list1还保存了行,list2保存了相关内容。这里便可以在A表格中写入信息了。if i[0] == j[0]:,写入信息。

# ==============================
wb1 = load_workbook(path1)
sheet_names1 = wb1.sheetnames
ws1 = wb1[sheet_names1[0]]
ws1['N2'] = '***'
ws1['O2'] = '***'
ws1['P2'] = '***'
for i in list2:
    for j in list1:
        if i[0] == j[0]:
            ws1['N%d' % i[1]] = j[1]
            ws1['O%d' % i[1]] = j[2]
            ws1['P%d' % i[1]] = j[3]
ws1.column_dimensions['N'].width = 12.0
ws1.column_dimensions['O'].width = 36.0
ws1.column_dimensions['P'].width = 36.0
wb1.save(path1)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

国服小闲鱼请战

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值