python 封装openpyxl实现excel读写功能

本文介绍了如何使用Python的openpyxl库封装读写Excel文件的方法。xlrd用于读取,xlwt用于写入,但不支持.xlsx格式,而openpyxl则同时支持读写.xlsx。作者通过封装函数简化了读写流程,提供了一个读取方法,读取的数据以二维列表形式返回。另一个写入方法接受数据、文件路径、表格名称等参数,允许设置行高和合并单元格。此外,还提供了设置表格样式的辅助方法。测试结果显示,封装后的函数能够正确地读写Excel数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说到python读写excel,想到的的就是xlrd、xlwt、openpyxl、pandas这几个库吧,最近用到读写excel,于是初略看了下这几个库的使用,xlrd用于读取excel的,xlwt用于写excel的,但不能写后辍为.xlsx的文件,openpyxl既能读也能写,感觉是前面两个的结合以及结合,用法也基本雷同,pandas功能比较强大,能读能写,还能各种数据分析,在excel表格中能操作的,几乎在pandas中都能做到。xlrd读取数据时,可以直接到表格的一行转成一个列表,比较方便,openpyxl读来每行是以cell为元素的列表,还要再转换一次(或许我还不知道怎么直接转成列表的),所以写用了xlrd。由于xlwt不能写.xlsx的文件,于用写用openpyxl,pandas跃然功能强大,但对我来说感觉pandas还是比较复杂,不好操作,前两个已满足我现在的读写的功能需求。不管是xlrd还是openpyxl,读写的流程基本是一样的,写初始化一个workbook,再获取一个sheet,然后读或者写数据,如果写,还要设置表格的样式,最后workbook.save()下。每次都这样嫌麻烦,于是想写两个方法封装下。

def readExcel(path, sheetName=None):

第一个读的方法,接受一个已存在的Excel路径,还有一个可选参数sheetName,如果不指定,默认读第一个表格,返回一个两层的列表[ [], [] ,....],第二层的列表每一个表示一行的数据,得到每行的数据后,想怎么操作就看自己的了。

def writeExcel(path, data, title=None, row_height=18, merge_row_col=[]):

第二个写的方法

path:写入excel的文件路径,不存在新建,存在的话就覆盖

data:写入excel的数据,格式为[[], [],...]或([], [],...)或[(), (),...]或((),( ),...),第二层每个元素表示一行数据,可以长度不一致,表格的列数以最长的那个元素为准,值为None或者长度达不到最达长度的,写入excel时为空

title:表格名称,就是我们excel中的sheet1,sheet2,类型为字符串

row_height:设置表格行高,默认为18,

merge_row_col:合并单元格的起止位置组合,格式为({},{},...)或[{},{},...],其中元素{}的key-value如下:

{
    "start_row": 2,
    "start_column": 4,
    "end_row": 3,
    "end_column": 4
}

然后这个方法把样式写死了,有需求自己改下,把样式的值放方法参数中,可在外进行设置。

def judge_merge(merge_row_col):

这个方法是判断传入的merge_row_col是否符合合并的要求,要求是两次合并不能重叠

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值