如何使用python 3从excel中的宏单元格中读取值

如何使用python 3从excel中的宏单元格中读取值,python,vba,openpyxl,xlsm,Python,Vba,Openpyxl,Xlsm,我正在尝试使用openpyxl库从python中基于宏的xls文件(.xlsm)读取内容。我想从单元格中读取值,但我得到的是宏公式,而不是从单元格中的宏中填充的值。 有没有办法从python中的单元格内容中获取值 ##下面是示例代码 导入openpyxl def生成输出文件(模板路径、输出路径): 如果name==“main”: 您可以将data\u only=True设置为使用公式从单元格中读取值 from openpyxl import load_workbook wb = load_wor

我正在尝试使用openpyxl库从python中基于宏的xls文件(.xlsm)读取内容。我想从单元格中读取值,但我得到的是宏公式,而不是从单元格中的宏中填充的值。 有没有办法从python中的单元格内容中获取值

##下面是示例代码 导入openpyxl

def生成输出文件(模板路径、输出路径):

如果name==“main”:


您可以将
data\u only=True
设置为使用公式从单元格中读取值

from openpyxl import load_workbook
wb = load_workbook("yourData.xlsm", data_only=True)
ws = wb['test']
cell = ws['A1']
value = cell.value
发件人:

data\u only
(bool)–控制带有公式的单元格是否具有 上次Excel读取公式时存储的公式(默认值)或值 床单


您可以将
data\u only=True
设置为使用公式从单元格中读取值

from openpyxl import load_workbook
wb = load_workbook("yourData.xlsm", data_only=True)
ws = wb['test']
cell = ws['A1']
value = cell.value
发件人:

data\u only
(bool)–控制带有公式的单元格是否具有 上次Excel读取公式时存储的公式(默认值)或值 床单



这个问题与你的问题类似:听起来也像这个问题:@marni。。感谢您的回复,但我在使用openpyxl加载工作簿时使用了data_only=True,但我使用了它,然后它给了我None我在示例代码下面附上了它,其中单元格B276包含来自宏的自动填充值。。。。导入openpyxl output\u path=“C:\\Users\\DEMO\\macro\u xls\\output\\sample\u test.xlsm”wb=openpyxl.load\u工作簿(output\u path,data\u only=True)new\u sh=wb.get\u sheet\u by_name('II.8')print(new_sh['B276'].value)如何向我们展示您尝试过的代码?这个问题与您的问题类似:听起来像这样的问题:@marni。。感谢您的回复,但我在使用openpyxl加载工作簿时使用了data_only=True,但我使用了它,然后它给了我None我在示例代码下面附上了它,其中单元格B276包含来自宏的自动填充值。。。。导入openpyxl output\u path=“C:\\Users\\DEMO\\macro\u xls\\output\\sample\u test.xlsm”wb=openpyxl.load\u工作簿(output\u path,data\u only=True)new\u sh=wb.get\u sheet\u by_name('II.8')print(new\u sh['B276'].value)如何向我们展示您尝试过的代码?我尝试过相同的解决方案(代码在上面的注释中提到),但它没有给我任何价值。实际上,我正在给.xlsm文件中的普通单元格赋值,一旦我给了该值,宏就会运行,有些单元格的值会自动填充,我试图在同一执行过程中读取这些单元格的值。因此,必须触发宏才能在单元格中插入数据,否则它将为空,对吗?宏被触发了。在同一执行过程中,我将数据写入单元格,从该宏触发并填充值。在那之后,我保存了修改过的工作簿,然后我再次打开工作簿,在同一次执行中,数据仅为True,如果您尝试使用
.xlsx
格式保存文件,然后使用
openpyxl
读取此类文件中的数据,会发生什么情况?使用.xlsx保存文件,然后使用openpyxl读取文件也不起作用。我尝试了相同的解决方案(上面的注释中提到了代码),但它没有给我任何价值。实际上,我正在给.xlsm文件中的普通单元格赋值,一旦我给了该值,宏就会运行,有些单元格的值会自动填充,我试图在同一执行过程中读取这些单元格的值。因此,必须触发宏才能在单元格中插入数据,否则它将为空,对吗?宏被触发了。在同一执行过程中,我将数据写入单元格,从该宏触发并填充值。在那之后,我保存了修改过的工作簿,然后我再次打开工作簿,在同一次执行中,数据仅为True,如果您尝试使用
.xlsx
格式保存文件,然后使用
openpyxl
读取此类文件中的数据,会发生什么情况?使用.xlsx保存文件,然后使用openpyxl读取也不起作用
from openpyxl import load_workbook
wb = load_workbook("yourData.xlsm", data_only=True)
ws = wb['test']
cell = ws['A1']
value = cell.value