Python读写与追加excel文件实例讲解
程序员文章站
2022-08-11 12:03:17
读写与追加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)