学习 python 库:openpyxl
最编程
2024-04-30 16:58:19
...
一、前言
openpyxl介绍:
读取/写入 Excel2010 xlsx / xlsm / xltx / xltm 文件的python库。
官方解释地址:http://openpyxl.readthedocs.io/en/stable/
二、安装openpyxl模块
openpyxl是开源项目,使用pip3就可以进行安装openpyxl模块
pip3 install openpyxl
我使用的是pycharm,在pycharm的file--sitting里面可以直接安装,如图:
三、简单应用:
写数据:
def write_data_to_excel():
file = openpyxl.load_workbook("../data/regist_test_data.xlsx")
file.worksheets
sheet = file.active
for j in range(1, 11):
time.sleep(1)
# 邮箱
email = make_email() # 是自己写的生成email的方法
sheet["A%d" % (j + 1)].value = email
# 用户名
username = make_name() # 是自己写的生成username的方法
sheet["B%d" % (j + 1)].value = username
# 密码
passwd = random_password() # 是自己写的生成password的方法
sheet["C%d" % (j + 1)].value = passwd
file.save("../data/regist_test_data5.xlsx")
write_data_to_excel()
读数据:
def test_all(self):
log.info("----我们开始要注册了哦----")
time.sleep(2)
ipinfo = get_ip_info()
print("****** begin ******")
book = openpyxl.load_workbook("../data/regist_test_data4.xlsx") # 默认可读写,若有需要可以指定write_only和read_only为True
b = book.active
datadict = {} # 创建一个字典变量
maxC = b.max_column # 获取最大列
maxR = b.max_row # 获取最大行
# range默认从0开始,到后面参数的-1结束,而openpyxl都是从第一行第一列开始的,所以参数为1,maxC+1;意思就是遍历第一列到最后一列,
for i in range(1, maxC + 1):
# 将第一行中的所有列即2标题作为键放到字典datadict里面
datadict.setdefault(b.cell(1, i).value)
# 除去第一行标题,从第二行遍历到最后一行
for i in range(2, maxR + 1):
# 从第一列遍历到最后一列
for j in range(1, maxC + 1):
# 把第二行的内容作为键对应的值放入字典datadict里面
datadict[b.cell(1, j).value] = b.cell(i, j).value
try:
email = datadict["email"]
print("获得的邮箱:", email)
username = datadict["username"]
print("获得的用户名:", username)
password = datadict["password"]
print("获得的密码:", password)
time.sleep(2)
self.regist_driver.regist_all_function(email, username, password)
except:
# 当程序出现错误时,将错误结果写入表格中
b.cell(i, maxC, 'error')
# 最后记得关闭
book.save("../data/mylogintest.xlsx")
print("****** end ******")
四、下面展示一些基本操作:
import openpyxl
# 一、加载excel文件
file = openpyxl.load_workbook("test.xlsx")
print(file)
print("==========================================================")
# 二、获取sheet页
# 第1种 打开特定的sheet页,这种方法不建议使用,已经被弃用了,建议使用下面第3种的这个方法
# ab = file.get_sheet_by_name("sheet1") # DeprecationWarning: Call to deprecated function get_sheet_by_name (Use wb[sheetname])
# 第2种 通过索引加载sheet index从0开始
ab = file.worksheets[0]
# 第3种 通过sheet页名称获取
# ab = file["sheet1"]
# 第4种 获取当前的sheet页
# ab = file.active
print("==========================================================")
# 三、创建新的sheet页 ,创建成功,记得最后一定执行保存动作。创建的时候记得关掉excel文件
# 1、插入在工作簿的指定位置位置 index从0开始
ws = file.create_sheet(index=1)
# 2、创建的时候修改sheet页的名称
ws1 = file.create_sheet(title="hello", index=2)
# 3、默认插在工作簿末尾
ws2 = file.create_sheet()
print("==========================================================")
# 四、修改sheet页名称
ws.title = "my life"
ws2.title = "hello world"
print("==========================================================")
# 五、读取数据,单元格操作
DATA = []
'''
iter_rows()
按行生成工作表中的单元格。 指定迭代范围
使用行和列的索引。
如果未指定索引,则范围从A1开始。
如果工作表中没有单元格,则返回空元组
'''
# 1、循环读取excel中所有的数据
for row in ab.iter_rows(
# range_string='A1:B2', # range_string:指定读取的范围(string类型),在这个方法里面不建议使用
min_col=1, # min_col:最小列索引(1-基础索引)int(类型)
min_row=1, # min_row:最小行索引(1-基础索引)int(类型)
max_row=ab.max_row, # max_row:最大行
max_col=ab.max_column, # max_col:最大列
row_offset=1, # 行偏移量,默认表示从0开始读取数据,从1开始,就会略过第1行,下面多读取一行
column_offset=0 # 同上
):
# print("我们得到的迭代数据:", row) # 这里我们得到的值是这个excel有值的地址,以每行的形式读取,返回的是tuple
ROW = []
for cell in row:
ROW.append(cell.value)
print("表中读取到的数据:", ROW)
# DATA.append(ROW)
# print(DATA)
print("********************")
# 2、读取exce中单个数据
only_data = ab["A2"].value
print(only_data)
print("********************")
# 3、获取多个单元格的值
range_data = ab["A1:D5"][0]
for i in range_data:
print(i.value)
print("********************")
# 4、给单元格赋值
ab["E1"] = "test"
# file.save("test.xlsx")
参考了简书,博客地址:https://www.jianshu.com/p/b1983be87f56
推荐阅读
-
基于SSM的面向过程考核的高校课程实验系统-00941(免费领取源码+数据库) 可做计算机毕业设计 JAVA、PHP、爬虫、APP、小程序、C#、C++、python、数据可视化、大数据、全套文案等
-
Python Linux 自动化运行 -- Openpyxl Excel 处理
-
Python Notes (XIV):操作 excel openpyxl 模块
-
Python 的 openpyxl 性能加速
-
询问如何在 openpyxl python EN 中检查单元格是否为空
-
Python excel 文件操作 openpyxl
-
Python Openpyxl Excel 处理库
-
用 Python openpyxl 操作 Excel
-
Python openpyxl 库
-
学习 python 库:openpyxl