import openpyxl
book = openpyxl.load_workbook('b.xlsx') # 读取
# sheet = book["name_tab"]
sheet = book.active #
row=sheet.max_row # 行数
column=sheet.max_column # 列数
print(row)
print(column)
for r in range(2, row+1): # 跳过表头,行号是从1开始的,列号是从0开始的for c in range(14,24,2): # [14, 24) 之间每隔一列操作一下sheet[r][c].value = 1
book.save("b_.xlsx") # 保存
- 注意 行号 r 是从 1 开始的,列 用
[ ]
方式取元素 是从 0 开始的,cell(r, c)
是从 1 开始的 - 另外注意效率问题,
sheet[r][c]
取元素效率很低,推荐使用sheet.cell(r, c)
,见下面测试代码
import openpyxl
import time
book = openpyxl.load_workbook("b.xlsx")
sheet = book.active
row=sheet.max_row
column=sheet.max_column
print(row)
print(column)s_time = time.time()
for r in range(2, row+1): # 跳过表头for c in range(0, column):sheet[r][c].value = 1
e_time = time.time()
print(e_time - s_time)
book.save("b.xlsx")s_time = time.time()
for r in range(2, row+1): # 跳过表头for c in range(0, column):sheet.cell(r,c+1).value = 2
e_time = time.time()
print(e_time - s_time)
book.save("b_.xlsx")
3063
33
735.839537858963
0.19450640678405762
改下表格,测试下下标是从 0, 还是 1开始的
- 行号 r 是从 1 开始的,列号 c 用
[ ]
方式取元素 是从 0 开始的,cell(r, c)
是从 1 开始的