Python openpyxl 打开excel,修改某个参数值,读取到随着这个参数值改变后的单元格的数值

记录一下这个历史性的时刻!纠结了好久的问题终于解决了。

首先要感谢一下这个帖子: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

 

你可能感兴趣的:(python)