如何修改已经存在的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)