最近在用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另存一次就好了。
----------------踩坑無數次,需要我們學會看錯誤提示