Python读写与追加excel文件

来源:互联网 发布:js动态添加div属性值 编辑:程序博客网 时间:2024/06/06 18:14

读写与追加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,第三列添加3write.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)

原创粉丝点击