利用openpyxl修改xlsm文件(含公式)后保留公式的方法

在使用openpyxl读取xlsm文件时,设置data_only=True会导致公式转换为数值。为保留公式,需避免直接save,并在修改后使用特定方法保存。读取文件前应用`load_workbook(filename, keep_vba=True)`,修改后再次保存。注意,openpyxl save操作后,若用data_only=True读取公式会返回None。解决方法包括手动打开文件保存或使用特定函数。这样做是因为Excel保存时会生成两套值,data_only=True和False,save操作会丢失其中一套。" 85342326,5751434,SecureCRT + SecureFX 8.1 Bundle安装与注册指南,"['终端工具', 'SSH连接', '软件安装', '注册激活']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:

现在有一个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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值