有没有一种方法可以将Openpyxl中迭代的输出转换为坐标



在Openpyxl中的一系列单元格中迭代时,

for x in ws.iter_cols(1, 32, 1, 24):

for x in ws['A1':'T1']:

当我打印出来时,它会输出这样的字符串:

print(x)
>>> <Cell 'Worksheet 1'.A1>

有没有办法得到坐标?'A1'(1, 1)

我对此很陌生,所以如果我错过了,我很抱歉

在Openpyxl中,worksheet['A1':'C3']返回行和列的元组:

((<Cell 'Sheet1'.A1>, <Cell 'Sheet1'.B1>, <Cell 'Sheet1'.C1>), 
(<Cell 'Sheet1'.A2>, <Cell 'Sheet1'.B2>, <Cell 'Sheet1'.C2>), 
(<Cell 'Sheet1'.A3>, <Cell 'Sheet1'.B3>, <Cell 'Sheet1'.C3>))

要访问第一个单元格,请使用worksheet['A1':'C3'][0][0],返回一个单元格对象。

若要获取单元格的范围字符串(即"A1"(,请使用coordinate属性。

worksheet['A1':'C3'][0][0].coordinate   # A1

要获取行和列,请使用相关属性

(worksheet['A1':'C3'][0][0].row, worksheet['A1':'C3'][0][0].column)  # (1,1)

对于在一个范围内迭代,您可以在元组值上循环

rng = worksheet['A1':'C3']
for r in rng:
for x in r:
print(x.coordinate, x.row, x.column)

输出

A1 1 1
B1 1 2
C1 1 3
A2 2 1
B2 2 2
C2 2 3
A3 3 1
B3 3 2
C3 3 3

您也可以使用iter_rows在单元格上进行迭代。以下代码产生与上述相同的输出

for c in worksheet.iter_rows(min_row=1, max_col=3, max_row=3):  # A1 - C3
for x in c:
print(x.coordinate, x.row, x.column)

最新更新