Python 2.7 如何使用xlwings在excel中获取公式结果

Python 2.7 如何使用xlwings在excel中获取公式结果,python-2.7,xlwings,Python 2.7,Xlwings,我要做的是1)在excel中获取一个公式结果,2)将值更新到现有excel文件。[我使用“xlsxwriter”创建并编写了folmula。但当我尝试openpyxl(或pandas)检索folmula结果时,它返回0。我想使用“xlwings”解决此问题,但不知道如何做。有人能帮我吗 #openpyx wb = openpyxl.load_workbook(filename=xlsx_name,data_only=True) ws = wb.get_sheet_by_name("sheet1"

我要做的是1)在excel中获取一个公式结果,2)将值更新到现有excel文件。[我使用“xlsxwriter”创建并编写了folmula。但当我尝试openpyxl(或pandas)检索folmula结果时,它返回0。我想使用“xlwings”解决此问题,但不知道如何做。有人能帮我吗

#openpyx
wb = openpyxl.load_workbook(filename=xlsx_name,data_only=True)
ws = wb.get_sheet_by_name("sheet1")
print "venn_value",(ws.cell('X2').value)
#pandas 
fold_merge_data=pd.read_excel(xlsx_name,sheetname=1)
print fold_merge_data['Venn diagram'][:10]

是的,xlwings可以为您解决这个问题,因为它使用pywin32对象与Excel交互,而不仅仅是读/写xlsx或csv文档,如openpyxl和pandas。这样,Excel实际上执行公式,xlwings将获取结果

为了获得该值,您可以执行以下操作:

import xlwings as xw
sheet = xw.sheets.active # if the document is open
#otherwise use sheet = xw.Book(r'C:/path/to/file.xlsx').sheets['sheetname']
result = sheet['X2'].value
另外,请注意,您可以使用设置公式,例如

sheet['A1'].value = '=1+1' # or ='B1*2' if you want to reference other cells

文档中解释了XlsxWriter公式为0的原因:。实际上我以前读过文档,我还读过另一个线程xlwings可能有助于解决此问题。我只是想知道使用xlwings(或其他任何东西)的是哪段代码可以解决此问题。如果您已经在使用XlsxWriter,为什么还要麻烦使用xlwings?这些文档还向您展示了如何将值写入单元格(以及公式),使其不为零。需要注意的一点是,这样做将打开Excel,因此基于xlwings的脚本在Linux系统上无法工作(可能是通过Wine,我还没有尝试过)。此外,这种方法比通过pandas等方法要慢得多,因此,如果您试图处理大量文档,它的可伸缩性不强。很遗憾,我在Linux中需要类似的东西。