更新.xlsm文件值python

时间:2017-07-26 09:30:35

标签: python openpyxl

我有一个.xlsm文件作为参考模板。我想使用.csv文件中的python更新此.xlsm文件的值。

template .xlsm ---->使用.csv

更新值

什么没效果: 我尝试使用pandas.to_excel方法。但是在写入工作表后,.xlsm文件被破坏了。

有人可以指出我正确的方向吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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函数必须做的事情比改变第3张中的B14单元更有意义。

有关详情,请参阅http://docs.xlwings.org/en/stable/quickstart.html