如何在 pandas / python 中查看 excel 电子表格的公式?

How can I see the formulas of an excel spreadsheet in pandas / python?

我想将 excel 电子表格读入 python / pandas,但使用的是公式而不是单元格结果。

例如,如果单元格 A1 为 25,单元格 B1 为 =A1,我希望我的数据框显示:

25    =A1

现在显示:

25    25

我该怎么做?

OpenPyXL provides this capacity out-of-the-box. See here and here。一个例子:

from openpyxl import load_workbook
import pandas as pd
wb = load_workbook(filename = 'empty_book.xlsx')
sheet_names = wb.get_sheet_names()
name = sheet_names[0]
sheet_ranges = wb[name]
df = pd.DataFrame(sheet_ranges.values)

是的,这是可能的。我最近发现了一个以非常复杂的方式解决这个问题的包。它被称为便携式电子表格(可通过 pip install portable-spreadsheet 获得)。它基本上封装了xlsxwriter。这是一个简单的例子:

import portable_spreadsheet as ps
sheet = ps.Spreadsheet.create_new_sheet(5, 5)
# Set values
sheet.iloc[0, 0] = 25  # Set A1
sheet.iloc[1, 0] = sheet.iloc[0, 0]  # reference to A1
# Export to Excel
sheet.to_excel('output/sample.xlsx')

它的工作方式与 Pandas Dataframe 类似。

有一种方法可以使用 xlwings 和 pandas 模块来执行此操作。 xlwings 提供了一种通过 python 脚本自动化 excel 的方法。

创建一个“sample.xlsx”文件并在范围内添加随机公式(“A1”)。

下面是示例代码,它将从给定文件中读取值和公式:

import pandas as pd
import xlwings as xw

wbk = xw.Book('sample.xlsx')
ws = wbk.sheets[0]
print(ws.cells(1,1).value)
print(ws.cells(1,1).formula)

同样的事情也适用于射程。您可以将 range.value 分配给数据框,反之亦然。 如果你想获得大范围的公式,你也可以得到它,但它会 return 元组。

希望这在一定程度上有所帮助。