我有一個.xlsm文件作爲參考模板。我想用.csv文件中的python更新這個.xlsm文件的值。使用的.csv更新.xlsm文件值python
什麼沒有奏效
模板.XLSM ---->更新值: 我嘗試使用pandas.to_excel方法。但寫入表單後,.xlsm文件會損壞。
難道有人請指點我正確的方向嗎?
我有一個.xlsm文件作爲參考模板。我想用.csv文件中的python更新這個.xlsm文件的值。使用的.csv更新.xlsm文件值python
什麼沒有奏效
模板.XLSM ---->更新值: 我嘗試使用pandas.to_excel方法。但寫入表單後,.xlsm文件會損壞。
難道有人請指點我正確的方向嗎?
openpyxl支持xlsm
文件。
from openpyxl import load_workbook
wb2 = load_workbook('test.xlsm', keep_vba=True)
update(wb2, csvfile.csv) # this is where you need to work according to your need.
wb.save('new_document.xlsm')
wb.close()
也許嘗試xlwings
,使用它是這樣的?
def update(workbook, csv_file):
ws = workbook.sheets[2]
ws.range('B14').value = 155
from xlwings import Book
wb = Book(r'test.xlsm')
update(wb, csv_file)
wb.save('test1.xlsm')
wb.close()
這是更新xlsm文件的最佳工具,因爲它使用WindowsAPI,並且在發生某些更改時會觸發宏。這意味着,它不適用於Linux。
當然,update
函數必須做更有意義的事情,而不是更改第三個工作表中的B14單元格。
欲瞭解更多信息,請閱讀http://docs.xlwings.org/en/stable/quickstart.html
謝謝,想給它一個嘗試 –
代碼寫的不好,即使它是改變了它不會起作用。由於'wb2.save('test.xlsm')'將它保存爲一個普通的xls,沒有任何xlsm功能。 –
謝謝。我會仔細看看的。 – Rahul