Python读写与追加excel文件

版权声明:本文为博主原创文章,转载请注明出处 https://blog.csdn.net/weixin_35757704/article/details/78857648

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

这篇博客从以下几个方面来叙述:

  1. 三个模块的安装
  2. 读取excel文件(.xls .xlsx)
  3. 写入excel文件
  4. 追加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)

猜你喜欢

转载自blog.csdn.net/weixin_35757704/article/details/78857648