记录一下这个历史性的时刻!纠结了好久的问题终于解决了。
首先要感谢一下这个帖子:https://bbs.csdn.net/topics/392568534
这个博主针对问题:openpyxl用data_only=True后,读取公式的值后save后,发现文件中公式都没了,请问有解决办法吗?提出,用win32打开再保存:
def just_open(filename):
xlApp = Dispatch("Excel.Application")
xlApp.Visible = False
xlBook = xlApp.Workbooks.Open(filename)
xlBook.Save()
xlBook.Close()
好了,说下我纠结的问题:
我想调用一个充满N多个公式的excel,实现:打开这个excel,修改某个参数值,希望读取到随着这个参数值改变后的单元格的数值。
实现方法:
import openpyxl
from win32com.client import Dispatch
def just_open(filename):
xlApp = Dispatch("Excel.Application")
xlApp.Visible = False
xlBook = xlApp.Workbooks.Open(filename)
xlBook.Save()
xlBook.Close()
wbDataOnly2 = openpyxl.load_workbook('C3.xlsx', data_only=False)#打开excel,为False表示不显示公式
#sheet2 = wbDataOnly2.active
sheet2 = wbDataOnly2.get_sheet_by_name(u'参数表')
sheet2['D5'].value = 2000
wbDataOnly2.save('C3_1.xlsx')
just_open('C3_1.xlsx')
wbDataOnly3 = openpyxl.load_workbook('C3_1.xlsx', data_only=True)#再次打开新保存的excel,为True表示显示公式计算结果
sheet3 = wbDataOnly3.get_sheet_by_name(u'参数表')
print sheet3['D65'].value