2020年7月9日 / 12,993次阅读 / Last Modified 2020年7月14日
excel表格
本文汇总一下用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 --
本文链接:https://www.pynote.net/archives/2219
《用openpyxl遍历表格的行列》有5条留言
前一篇:random.seed函数
后一篇:用openpyxl.styles设置格式
©Copyright 麦新杰 Since 2019 Python笔记
注意ws.dimensions与ws.max_row,ws.max_column的区别:
[ ]ws.rows是个generator [ ]
还有直接取某一行或某一列的对象的方法:
[ ]用这个方法可以设置列的宽和行的高。 [ ]