python修改已存在的excel表

如何修改已经存在的excel表中的单个值呢?

主要思路:修改已存在的excel表,需要用到xlutils中copy()方法,将原有的表格拷贝一份,在进行写操作,然后将修改后的表移动到原来的位置,覆盖原有的表,进行保存

前提准备:

1.先pip安装xlutils : >>pip install xlutils

操作步骤:

1.导入要用到的模块

from xlutils.copy import copy
import xlrd
import os

2.拷贝旧表

old_excel = xlrd.open_workbook(excel_path)
new_excel = copy(old_excel)

3.获取到第一个sheet页

sheet = new_excel.get_sheet(0)

4.修改单元格的值

sheet.write(0,0, '哈哈')  # 将第一行第一列修改为“哈哈”

5.将文件移动到指定路径上,并保存(这里两处路径都要与原来的excel存放地址保持一致)

os.remove('xxxxxx')
self.new_excel.save('xxxxxx')

下面是我写的一个完整的修改已存在excel的类:

from xlutils.copy import copy
import xlrd
import os

# excel的存放路径
excel_path = r'C:\Users\zd\Desktop\test.xls'


class ExcelUpdate(object):
    def __init__(self):

        self.old_excel = xlrd.open_workbook(excel_path)
        self.new_excel = copy(self.old_excel)

    def update_value(self, cell, value):
        '''
            - cell: 传入一个单元格坐标参数,例如:cell=(0,0),表示修改第一行第一列
        '''
        sheet = self.new_excel.get_sheet(0)
        sheet.write(*cell, value)
        os.remove(excel_path)
        self.new_excel.save(excel_path)

    def update_values(self, cells, values):
        '''
            - cells: 传入一个单元格坐标参数的list,
            - values: 传入一个修改值的list,
            例如:cells = [(0, 0), (0, 1)],values = ('a', 'b')
            表示将列表第一行第一列和第一行第二列,分别修改为 a 和 b
        '''
        for i in range(len(cells)):
            self.update_value(cells[i], values[i])

if __name__ == '__main__':
    start = ExcelUpdate()
    cells1 = [(0, 0), (0, 1)]
    values1 = ('飞猪', '哈哈')
    start.update_values(cells1, values1)

你可能感兴趣的:(python修改已存在的excel表)