python openpyxl 返回单元格行列_用openpyxl遍历表格的行列

本文汇总一下用openpyxl模块操作excel表格行列的技巧,始终记得:行的编号从1开始,列的标号从A开始。

查看整个sheet的dimensions:

>>> from openpyxl import load_workbook

>>> wb = load_workbook(filename='GM2020040102.xlsx')

>>> wb.sheetnames

['production', 'Sheet2', 'Sheet3']

>>> ws = wb['production']

>>> ws.dimensions

'A1:J3'

最简单粗暴的遍历方法就是这样:

>>> data = tuple(ws)

>>>

>>> for i in range(3):

... for j in range(7):

... print(data[i][j].value)

...

name

type

quantity

sn_start

sn_end

hardv

softv

产品名称

产品型号

数量

序列号start

序列号end

实际硬件版本

实际软件版本

10G SFP+ LR收发合一光模块

P2L

101

123456000

123456999

P2L_V2.0

P2L_1_00_011.hex

上面的循环,i对应行,1-3,j对应列,A-J。

通过ws.rows可以更好地按行遍历:

>>> for row in ws.rows:

... print(row)

同样用ws.columns做按列遍历:

>>> for col in ws.columns:

... print(col)

遍历单行:

>>> for hang2 in ws[2]:

... print(hang2.value)

...

产品名称

产品型号

数量

序列号start

序列号end

实际硬件版本

实际软件版本

对外硬件版本号

对外软件版本号

备注说明

遍历多行:

>>> for hi in ws[1:3]:

... for it in hi:

... print(it.value)

...

ws[1:3]就是第1行到第3行。

遍历单列:

>>> for col in ws['A']:

... print(col.value)

...

name

产品名称

10G SFP+ LR收发合一光模块

这是直接遍历A列。

遍历多列:

>>> for cols in ws['A:C']:

... for j in cols:

... print(j.value)

...

取一个区域进行遍历,使用iter_rows或者iter_cols函数,假设我们有如下一个表格:

测试用表格

>>> wb2 = load_workbook(filename='saved.xlsx')

>>> wb2.sheetnames

['Sheet']

>>> ws2 = wb2['Sheet']

>>>

>>> ws2.dimensions

'B4:D6'

>>>

>>> for row in ws2.iter_rows(min_row=4,max_row=5,min_col=2,max_col=3):

... for i in row:

... print(i.value)

...

1

2

4

5

>>>

>>> for col in ws2.iter_cols(min_row=4,max_row=5,min_col=2,max_col=3):

... for j in col:

... print(j.value)

...

1

4

2

5

iter_rows是行优先,而iter_cols是列优先。此时列也要用数字来表示,A就是1。

-- EOF --

你可能感兴趣的:(python,openpyxl,返回单元格行列)