2017-07-26 43 views
-2

我有一個.xlsm文件作爲參考模板。我想用.csv文件中的python更新這個.xlsm文件的值。使用的.csv更新.xlsm文件值python

什麼沒有奏效

模板.XLSM ---->更新值: 我嘗試使用pandas.to_excel方法。但寫入表單後,.xlsm文件會損壞。

難道有人請指點我正確的方向嗎?

回答

0

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() 

https://openpyxl.readthedocs.io/en/default/tutorial.html

+0

謝謝,想給它一個嘗試 –

+0

代碼寫的不好,即使它是改變了它不會起作用。由於'wb2.save('test.xlsm')'將它保存爲一個普通的xls,沒有任何xlsm功能。 –

+0

謝謝。我會仔細看看的。 – Rahul

0

也許嘗試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