最近在用Python写入文件的时候,发现之前写入的方法会覆盖掉原excel中的公式,原代码如下
def write_excel_xls(row, col, value): """ excel 写入 :param row: :param col: :param value: :return: """ book_r = xlrd.open_workbook(data_file) book_w = copy(book_r) # 复制原表格 sheet_1 = book_w.get_sheet(0) # 以编辑方式得到文件的第一个工作表 sheet_1.write(row, col, value) # 把内容写入表格 os.remove(data_file) # 删除原文件 book_w.save(data_file) # 保存修改的文件为原文件
找了资料后发现, copy 的时候不会copy excel中的公式
于是尝试用其他的方法进行excel写入,代码如下:
from openpyxl import load_workbook from data.datapath import file_name workbook_ = load_workbook(file_name) print(workbook_.sheetnames) sheetnames = workbook_.sheetnames # 获得表单名字 sheet = workbook_[sheetnames[1]] # sheet['A7'] = '47' workbook_.save(file_name)
写入的过程有点波折,百度其他的代码如下
from openpyxl import load_workbook from data.datapath import file_name workbook_ = load_workbook(file_name) sheetnames = workbook_.get_sheet_names() # 获得表单名字 sheet = workbook_.get_sheet_by_name(sheetnames[0]) sheet['A1'] = '47' workbook_.save(file_name)
运行发现报错
提醒方法改为sheetnames,再改
from openpyxl import load_workbook from data.datapath import file_name workbook_ = load_workbook(file_name) sheetnames = workbook_.sheetnames # 获得表单名字 sheet = workbook_.get_sheet_by_name(sheetnames[0]) sheet['A1'] = '47' workbook_.save(file_name)
继续报错
发现又是写法错误
from openpyxl import load_workbook from data.datapath import file_name workbook_ = load_workbook(file_name) sheetnames = workbook_.sheetnames # 获得表单名字 sheet = workbook_[sheetnames[0]] sheet['A1'] = '47' workbook_.save(file_name)
改成这样就好啦
打开excel,发现已经更改了数据,并且里面的公式也没有被覆盖
ps:可能会出现其他的错误,将excel另存一次就好了。
----------------踩坑无数次,需要我们学会看错误提示