openpyxl按行读取和按列读取excel,以及写入excel

openpyxl是python操作excel文件的一个库,既能读也能写,只支持xlsx格式

1.openpyxl读取

这里有一个excel表格,要求按行读取,和按列读取
在这里插入图片描述
首先导入openpyxl库
安装 pip install openpyxl

import openpyxl bk=openpyxl.load_workbook(‘文件名’) #打开一个文件
sheet=bk.active #打开工作表也可以用sheet1=bk.get_sheet_by_name(‘Sheet1’)

openpyxl中有方法可以获取最小行数最大行数和最小列数最大列数

minrow=sheet.min_row #最小行
maxrow=sheet.max_row #最大行
mincol=sheet.min_column #最小列
maxcol=sheet.max_column #最大列

可以打印出来看看 print(minrow)

#按行读取
for i in range(minrow,maxrow+1):
    for j in range(mincol,maxcol+1):
        cell=sheet.cell(i,j).value
        print(cell,end=" ")
    print()

打印出来如下
在这里插入图片描述

#按列读取
for m in range(mincol,maxcol+1):
    for n in range(minrow,maxrow+1):
        cell=sheet.cell(n,m).value
        print(cell,end=" ")
    print()

打印出来如下
在这里插入图片描述
这里用到的是sheet.cell(i,j).value的方法,第一行第一列是sheet.cell(1,1).value
它是从下标为1开始算起的
sheet.cell(1,1) 取出来的是第一个单元格的对象
打印出来是A1这个单元格在这里插入图片描述
所以要用.value的方法来取到单元格的值

2.openpyxl的写入

首先获取表格 bk=openpyxl.Workbook()
获取sheet页 sh1=bk.active
用单元格写入
sh1[‘A1’]=‘test’
sh1.cell(1,2).value=‘123456’
此外,openpyxl支持一行一行的写入
如 user=[‘test’,‘123456’]
sh1.append(user)
现在有个数组要写入到excel表里
login = [
[‘张飞’ , ‘123456’ ] ,
[‘赵云’ , ‘123456’ ] ,
[‘许褚’ , ‘123456’ ] ,
[‘典韦’ , ‘123456’ ] ,
[‘关羽’ , ‘123456’ ] ,
[‘黄忠’ , ‘123456’ ] ,
[‘徐晃’ , ‘123456’ ] ,
[‘马超’ , ‘123456’ ]
]
代码如下:

bk=openpyxl.Workbook()
sh1=bk.active
for i in range(len(login)):
    sh1.append(login[i])
bk.save('userinfo.xlsx')

操作excel表格是离不开for循环的,所以一定要学好for循环

猜你喜欢

转载自blog.csdn.net/shenshenruoxi/article/details/107826800