有没有办法可以在任何 python 网络抓取工具中通过标题名称标记 Excel 列?
例如A栏是零食,B栏是饮料,C栏是水果:
在Python中,如果我想将葡萄添加到水果表中,我可以这样做:
wb.sheets['foods'].range('C5').value = "grapes"
但是,如果我在饮料和水果之间添加一个名为“蔬菜”的新列,那么水果将位于 D 列中。
现在,如果我使用与之前相同的代码将葡萄添加到水果表中,它会将其放入蔬菜部分:
wb.sheets['foods'].range('C5').value = "grapes"
因此我必须更改代码,使其变成这样:
wb.sheets['foods'].range('D5').value = "grapes"
有没有办法让 python 知道哪一列是哪一列,这样当我在中间添加列时,我就不必不断更改代码?
是的,这可以通过多种方式实现。我相信最简单的方法之一是使用“命名范围”。只需在单元格上创建一个命名范围 “drinks”,在其中放置字符串 “drinks”。然后使用 "drinks"
代替地址,通过
"drinks"
获取范围。当您插入新列时,命名范围的地址将自动调整。使用 get_address获取范围的实际地址。使用方法 end 和 offset 来定位添加新项目的位置:
headers = '''
snacks
drinks
fruits
'''.strip().split()
ws = wb.sheets['foods']
for cell, header in zip(ws['1:1'], headers):
cell.value = header
cell.name = header
data = '''
chips,milk,apple
fries,juice,orange
candy,tea,banana
'''.strip().split()
data = [x.split(',') for x in data]
ws['A2'] = data
print(f'{ws['drinks'].get_address()=}')
ws['A:A'].insert()
print(f'{ws['drinks'].get_address()=}')
# add a new item to drinks
ws['drinks'].end('down').offset(1, 0).value = 'coffee'