zoukankan      html  css  js  c++  java
  • 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另存一次就好了。

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

  • 相关阅读:
    ContextMenustrip 控件
    Toolstrip 工具栏控件
    Menustrip控件和ContextMenustrip控件
    TabControl 选项卡控件
    GroupBox 分组框控件
    Pnel控件
    【bzoj3427】Poi2013 Bytecomputer dp
    【bzoj3174】[Tjoi2013]拯救小矮人 贪心+dp
    【bzoj1334】[Baltic2008]Elect 背包dp
    【bzoj1369】[Baltic2003]Gem 树形dp
  • 原文地址:https://www.cnblogs.com/jescs/p/12188319.html
Copyright © 2011-2022 走看看