通过 xlwings/pandas 中的标题名称标记 Excel 列

问题描述 投票:0回答:1

有没有办法可以在任何 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 知道哪一列是哪一列,这样当我在中间添加列时,我就不必不断更改代码?

python pandas excel openpyxl xlwings
1个回答
0
投票

代码是否可以找到显示“饮料”的标题单元格?

是的,这可以通过多种方式实现。我相信最简单的方法之一是使用“命名范围”。只需在单元格上创建一个命名范围 “drinks”,在其中放置字符串 “drinks”。然后使用 "drinks" 代替地址,通过

"drinks"
获取范围。当您插入新列时,命名范围的地址将自动调整。使用
get_address
获取范围的实际地址。使用方法 endoffset 来定位添加新项目的位置: 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'

© www.soinside.com 2019 - 2024. All rights reserved.