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

            ----------------踩坑無數次,需要我們學會看錯誤提示


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM