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

Posted Study hard every day

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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另存一次就好了。

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

以上是关于Python 不改变原excel文件进行数据写入的主要内容,如果未能解决你的问题,请参考以下文章

python读取数据写入excel的四种操作

使用 Python/Pandas 将多索引数据写入 excel 文件

用python操作excel数据之避坑秘技

Python 如何把json数据写入excel

使用python读取excel中的数据,并重新写入到新的excel中

如何不使用 Python 将第一列写入 Excel 文件? [复制]