拥有自己的Python-Excel模块

大家都知道,使用python中的Excel模块openpyxl可以读取Excel文件。

示例

假如有一个Excel文件如下:
School.xlsx
使用openpyxl读取每个sheet页中的第2行第2列的内容。代码如下:

import openpyxl								#导入模块

excelfile = "school.xlsx"					# 要读取的 excel 文件
wb = openpyxl.load_workbook(excelfile)		# 生成excel文件对应的工作簿对象
ws = wb['老师']								# 切换到 老师 的 sheet 也,返回对应的sheet也对象
rvalue = ws.cell(2, 2).value				# 读取第2行第2列的数据
print(rvalue)								# 打印获取的数据

ws = wb['课程']
rvalue = ws.cell(2, 2).value
print(rvalue)

ws = wb['学生']
rvalue = ws.cell(2, 2).value
print(rvalue)

输出:
许口罩
数学
小红

上面过程,虽然取到了想要的数据,但是代码看起来非常难以理解。代码量再大一点的话,不光会出现很多的魔法数字,隔一段时间返回来再看的时候,可能自己都忘记了代码的意思。

这就需要我们将这些难以记忆,不易读懂的代码封装到易读懂的方法中,这样就更有利于开发。并且类中的方法可以随着开发需要不断的完善。例如,当我们想切换sheet页时。可以将方法命名为:switch_to_sheet(“页名”);当我们读取数据时,更喜欢使用列名来读取,而并非列的序号,比如我们要读取学生页的姓名列,就可以直接这样 get_value(2, “姓名”), 即读取第2行,姓名列的内容。这样和实际的情况相符。
当然了可以根据自己的想法命名为有意义的,易读懂的方法名即可

自定义封装

如下为封装后的类,这里只给出方法名,详细的类和测试代码见附件资源

class ExcelOpt:
    def __init__(self, file_name):   # 初始化
    def _build_header(self):   # 构建表头索引
    def _get_row_cell_value(self, row: str, col: str):  # 获取某行某列的值
    def switch_to_sheet(self, sheetname: str):  # 切换 sheet 页
    def get_value(self, row_num, col_name: str): # 获取某行某列的值
    def max_row(self):  # 获取当前 sheet 页最大行数
    def max_column(self): # 获取当前 sheet 页最大列数

有了这个类,读取文件就如同下面代码:

from excelopt import ExcelOpt

excelfile = "school.xlsx"
my_excel = ExcelOpt(excelfile)

# 读取老师页
my_excel.switch_to_sheet("老师")
for i in range(2, my_excel.max_row() + 1):
    print(my_excel.get_value(i, '姓名'))

# 读取课程页    
my_excel.switch_to_sheet("课程")
for i in range(2, my_excel.max_row() + 1):
    print(my_excel.get_value(i, '上课地点'))

输出:
许口罩
郑饭盒
姚外海
郭加佳
周时尼
科学楼202教室
勤学楼203教室
励志楼204教室
新明楼205教室
学上楼206教室

附件资源文件只写了几个读取的方法,当然还可以将写Excel的代码封装为自己想要的易读的方法。大家可以尽情发挥。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

枫叶2000

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

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

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

打赏作者

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

抵扣说明:

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

余额充值