python操作excel之openpyxl的入门操作

一、安装openpyxl

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple openpyxl==3.0.7

二、excel构成

1、excel文件

2、表单对象(sheet)

3、单元格

三、读取excel信息

1、创建表格对象

1、导入模块:
    from openpyxl import load_workbook

2、语法
    wb_obj = load_workbook(filename="testCase.xlsx")

3、参数:
filename:文件名
read_only:默认 False,可以读写;True--只读
data_only: data_only=False,只会显示公式而已,默认 False
            data_only=True,有公式单元格显示公式最近计算结果
keep_vba:默认 KEEP_VBA 保留 vba 代码
keep_links:默认 True 保留外部链接

2、获取表单对象

sheet_obj = wb_obj["register"]    # 通过表单名称指定获取

sheet_obj = wb_obj.worksheets[2]  # 通过表单的索引获取,从0开始

sheet_names = wb_obj.sheetnames
print("返回的所有的sheet_name的list列表", sheet_names)
for sheet in sheet_names:
    print(sheet.title())

3、获取单元格对象

res = sheet_obj["A3"]
res = sheet_obj.cell(1,6)   # row--行, column--列

4、获取单元格内容

res = sheet_obj.cell(1,6)
print(res.value)
wb_obj.close()  # 关闭文件流

5、关于excel行操作

# 1、获取所有的行对象
rows = sheet_obj.rows
pprint.pprint(list(rows))   # [(每一行单元格对象),()]

# 2、获取所有的行的内容
for val in rows:
    for i in val:
        print(i.value)

# 3、获取表单的最大行
maxrows = sheet_obj.max_row
print("最大的行:",maxrows)

# 4、获取指定行,切片
"""
语法:sheet_obj.iter_rows()
参数:
self,
min_row=None, 最小的行索引值,从1开始的
max_row=None, 最大的行索引值,从1开始的
min_col=None, 最小的列索引值,从1开始
max_col=None, 最大的列索引值,从1开始的
values_only=False 默认False-表示获取到的是对象,
            True-获取到的是对应的值
行切片包含起始索引位置的值
默认获取的是最大行和最大列的数据(表单中所有的数据)
"""
# ----------行切片的demo实例---------

from openpyxl import load_workbook
wb_obj = load_workbook("testCase.xlsx")
sheet_obj = wb_obj["login"]
# 获取指定行和列的数据,空行就是None
data_list = sheet_obj.iter_rows(min_row=1, max_row=2, min_col=1, max_col=5, values_only=True)
data_list1 = sheet_obj.iter_rows(values_only=True)  # 全部数据
print(data_list)  # 生成器也是可迭代对象
# print(next(data_list1))  # next一下 获取一行数据
for val in data_list:
     print(val)

6、关于excel列操作

# 1、获取所有的列对象
res = sheet_obj.columns

# 2、获取最大的列
max_col = sheet_obj.max_column

# 3、获取所有列的内容
for val in res:
     for i in val:
        print(i.value)

# 4、获取指定列,切片操作
# values_only=True的场景
data_list = sheet_obj.iter_cols(values_only=True)  # 获取所有列的数据
# 获取指定的
data_list1 = sheet_obj.iter_cols(max_col=5, min_col=1,max_row=3,min_row=1,values_only=True)
# print(data_list)
for val in data_list1:
    print(val)

# values_only=False的场景
data_list1 = sheet_obj.iter_cols(max_col=5,min_col=1,max_row=3,min_row=1,values_only=False)
for val in data_list1:
    print(val.value)
wb_obj.close()

 四、写入表格信息

# 1、根据单元格名称来写
sheet_obj["A1"] = "test"

# 2、指定行和列来写
sheet_obj.cell(row=2, column=2).value = "py46"  
sheet_obj.cell(row=3, column=3, value="py46")

# 3、同时写入多个数据
data_list = ['test1', 'test2', 'test3','http://www.baidu.com']
sheet_obj.append(data_list)

data_list = [('test1', 'test2', 'test3'), ('test4', 'test5', 'test6')]
    for val in data_list:
        sheet_obj.append(val)
TODO:追加写入,不会覆盖现有数据
     接收一个可迭代对象(列表、元组、set类型不可以--无序的)
     支持嵌套数据写入,但是嵌套数据必须都是可迭代对象

# 4、----------关于写入表格信息的demo实例----------
from openpyxl import load_workbook
wb_obj = load_workbook("testCase.xlsx")
sheet_obj = wb_obj["login"]
# sheet_obj["A1"] = "test"  # 写单元格
# sheet_obj.cell(row=2, column=2).value = "py46"  # 指定行和列去写值
# sheet_obj.cell(row=3, column=3, value="py46")   # 指定行和列去写值

# data_list = ['test1', 'test2', 'test3','http://www.baidu.com']
data_list = [('test1', 'test2', 'test3'), ('test4', 'test5', 'test6')]
for val in data_list:
    sheet_obj.append(val)

wb_obj.save("testCase.xlsx") # 保存
wb_obj.close()   # 关闭
  

五、excel的数据封装

from openpyxl import load_workbook
from pprint import pprint
# wb_obj = load_workbook("testCase.xlsx")
# sheet_obj = wb_obj["register"]


class HandleExcel:
    def __init__(self, filename, sheet_name):
        self.wb_obj = load_workbook(filename=filename)
        self.sheet_obj = self.wb_obj[sheet_name]
        self.data_list = self.sheet_obj.iter_rows(values_only=True)
        # pprint(list(self.data_list))
        self.wb_obj.close()

    def get_case_data(self):
        test_case_list = []
        data_list = list(self.data_list)    # 有坑:如果不声明一个变量,否则导致读取不到数据,                                                                可能在别处打印的时候已经消费了这个数据
        excel_title = data_list[0]
        excel_data = data_list[1:]
        # print("表头", excel_title)
        # print("*" * 20)
        # print("表体", excel_data)
        for case_data in excel_data:
            case = dict(zip(excel_title, case_data))
            test_case_list.append(case)
        return test_case_list
if __name__ == '__main__':
    cl = HandleExcel(filename="testCase.xlsx", sheet_name="register")
    pprint(cl.get_case_data())

六、关于excel读取数据再写入读取的数据

"""
一、excel中有表头字段,id,method,url,data,result
其中id,method,url,data字段数据自己随便写,在result字段中写入对应行的data数据
"""

from openpyxl import load_workbook
from pprint import pprint


class HandleExcel:
    def __init__(self, filename, sheet_name):
        self.wb_obj = load_workbook(filename=filename)
        self.sheet_obj = self.wb_obj[sheet_name]
        self.data_list = self.sheet_obj.iter_rows(values_only=True)
        # pprint(list(self.data_list))
        self.wb_obj.close()

# 读取excel的数据
    def get_case_data(self):
        test_case_list = []
        data_list = list(self.data_list)
        excel_title = data_list[0]
        excel_data = data_list[1:]
        # print("表头", excel_title)
        # print("*" * 20)
        # print("表体", excel_data)
        for case_data in excel_data:
            case = dict(zip(excel_title, case_data))
            test_case_list.append(case)
        return test_case_list

# 拿到数据后,进行写数据,拿到数据的格式[{},{}]
    def write_case_data(self):
        data_list = self.get_case_data()
        # data_list2 = list(self.data_list)
        for index in range(len(data_list)):
            self.sheet_obj.cell(row=index+2, column=5).value=data_list[index]["data"]
        self.wb_obj.save("py15-homework.xlsx")
        self.wb_obj.close()


if __name__ == '__main__':
    cl = HandleExcel(filename="py15-homework.xlsx", sheet_name="register")
    # pprint(cl.get_case_data())
    cl.write_case_data()

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要使用Python录入Excel表格,你可以使用xlwt库或openpyxl库。如果你想使用xlwt库,你可以按照以下步骤进行操作: 1. 首先,导入xlwt库:`import xlwt` 2. 创建一个Excel文件:`wb = xlwt.Workbook()` 3. 添加一个新表:`ws1 = wb.add_sheet('first')` 4. 定义表头和数据:根据你的需求,使用`ws1.write(row, col, value)`方法将数据写入表格中,其中`row`和`col`表示行和列的索引,`value`表示要写入的值。 5. 保存Excel文件:`wb.save('filename.xls')` 如果你想使用openpyxl库,你可以按照以下步骤进行操作: 1. 首先,导入openpyxl库:`from openpyxl import Workbook` 2. 创建一个Workbook对象:`wb = Workbook()` 3. 获取默认的Sheet表格:`ws = wb.active` 4. 定义表头和数据:根据你的需求,使用`ws.cell(row, col, value)`方法将数据写入表格中,其中`row`和`col`表示行和列的索引,`value`表示要写入的值。 5. 保存Excel文件:`wb.save('filename.xlsx')` 以上是两种常用的方法来录入Excel表格。你可以根据自己的需求选择适合的方法来实现。 #### 引用[.reference_title] - *1* *2* [Python如何将txt文件录入Excel表格](https://blog.csdn.net/yuwoxinanA3/article/details/121583669)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【Python入门到实践5.0】将数据写入Excel表格](https://blog.csdn.net/l782060902/article/details/124604819)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试小白00

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值