欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python读写与追加excel文件实例讲解

程序员文章站 2022-05-07 17:03:52
读写与追加excel文件用的是 xlwt(写),xlrd(读),xlutils(操作excel)这三个包 三个模块的安装读取excel文件(.xls .xlsx)写入excel文...

读写与追加excel文件用的是 xlwt(写),xlrd(读),xlutils(操作excel)这三个包

三个模块的安装读取excel文件(.xls .xlsx)写入excel文件追加excel文件

1.三个模块的安装

pip install xlwt

pip install xlrd

pip install xlutils

2.读取excel文件 读取excel的逻辑是: workbook(工作薄)------------》表(sheet)---------》 行,列 ---------》单元格 下面是我写的一个类:

class Read_excel(object):
    def __init__(self, path_name, sheet='sheet1'):
        self.work_book = xlrd.open_workbook(path_name)
        self.sheet = self.work_book.sheet_by_name(sheet)

    # 根据行号得到该行全部数据
    def get_value_by_row(self, row):
        return self.sheet.row_values(row)

    # 了解这个表一共有多少行
    def get_row_number(self):
        return self.sheet.nrows

与他对应的测试类:

write = Read_excel(path_name='test.xlsx', sheet='sheet1')
write.get_value_by_row(2)  # 得到第3行的数据,返回一个列表
print(write.get_row_number())  # 得到'sheet1'这张表一共有多少上

3.写入excel文件 写入excel与读取的思路相同: 新建工作薄(work_book) ---------------- 》 新建表(sheet) -------------》 为表中添加元素 ---------》保存到本地 我同样写了一个小的例子:

class Write_excel(object):

    def __init__(self, path_name, sheet='sheet1'):
        self.row_num = 0
        self.save_path = path_name
        self.work_book = xlwt.Workbook(encoding='utf-8')
        self.sheet = self.work_book.add_sheet(sheet)

    # 添加内容,添加的内容会独占一行
    def add_content(self, content):
        for i in range(len(content)):
            # 这是写入数据的根本函数 参数是:(行号,列号,这一格写入内容)
            self.sheet.write(self.row_num, i, content[i])
        self.row_num = self.row_num + 1

    # 将文件从内存中写入本地
    def write_now(self):
        self.work_book.save(self.save_path)

与它对应的测试类:

write = Write_excel(path_name='test.xlsx', sheet='sheet1')
write.add_content(['1', '2', '3'])  # 在第一行第一列添加1,第二列添加2,第三列添加3
write.write_now()

注意:这里的path_name可以是一个不存在的文件,但是如果写路径,linux下不能使用~/Desktop/...什么的,要舍去‘~’,把路径写全 /home/user/Desktop/...

4.追加excel文件 本人不推荐频繁的追加excel文件,因为它的思路是: 读取一个文件的内容,放到内存中 ------------》 在内存中完成修改 ----------------》将内存中的新内容变成excel文件覆盖掉原来的文件 这里我写了一个具体的方法:

def append_excel(path_name):
    write_excel()
    book = xlrd.open_workbook(path_name)
    wfile = copy(book)  # 在内存中复制
    wsheet = wfile.get_sheet('sheet')
    wsheet.write(2, 1, 'new_new_new')  # 在第3行第2列添加新数据'new_new_new'
    wfile.save(path_name)