Python 不改变原excel文件进行数据写入

最近在用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另存一次就好了。

            ----------------踩坑无数次,需要我们学会看错误提示

原文地址:https://www.cnblogs.com/jescs/p/12188319.html