问题:
现在有一个xlsm文件,我想读取里面一个单元格的公式转化后的值,于是利用了data_only=True方法,之后我要对文件进行一些修改,save函数之后,再打开文件,却发现里面单元格的公式都没了,都转化成数字了,要怎么保留文件的公式呢?
(原问题来自我的一个帖子:https://bbs.youkuaiyun.com/topics/392568534)
解决方法:
这个方法可能有点不方便,但现阶段我只能想出这个办法了。
在读取文件之前用
workbook_ = load_workbook(filename,keep_vba=True,data_only=True)
,
读取后不save;
之后要修改文件的话,再重新workbook_ = load_workbook(filename,keep_vba=True,data_only=False)
,
修改后再save。
下面是一个例子:
from __future__ import unicode_literals
from openpyxl import Workbook
from openpyxl import load_workbook
from openpyxl.writer.excel import ExcelWriter
from win32com.client import Dispatch
filename = 'D:\\4.23Test1.xlsm'
def just_open(filename):
xlApp = Dispatch("Excel.Application")
xlApp.Visible = False
xlBook = xlApp.Workbooks.Open(filename)
xlBook.Save()
xlBook.Close()
# keep_vba=True