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

Posted

技术标签:

【中文标题】如何在 pandas/python 中查看 excel 电子表格的公式?【英文标题】:How can I see the formulas of an excel spreadsheet in pandas / python? 【发布时间】:2017-06-25 10:54:05 【问题描述】:

我想在 Excel 电子表格中读取 python/pandas,但使用公式而不是单元格结果。

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

25    =A1

现在显示:

25    25

我该怎么做?

【问题讨论】:

我很确定 pandas 中没有内置的方法可以做到这一点。 @juanpa.arrivillaga 同意了,尽管收到确认总是很高兴。希望有一个包或可以允许它的东西。 【参考方案1】:

OpenPyXL 提供这种开箱即用的容量。请参阅 here 和 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)

【讨论】:

我在实施时遇到问题:***.com/questions/42397769/… 看起来有人在我之前做到了。另外,您应该接受这篇文章作为答案。 只是在等待验证。我现在有。谢谢! 嗨 @AlekseyBilogur 知道我们如何在 CSV 中进行操作吗? 嗨@AlekseyBilogur 我确实试了一下,虽然这种方法会读取公式,但它似乎正在删除值本身?我阅读并刚刚将 excel 写入新文件,它保留了公式、格式和所有内容,但截断了其中的所有值。【参考方案2】:

是的,这是可能的。我最近发现了一个以非常复杂的方式解决此问题的软件包。它被称为便携式电子表格(可通过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 类似。

【讨论】:

【参考方案3】:

使用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 分配到数据框中,反之亦然。 如果你想从大范围内获取公式,你也可以得到它,但它会返回元组。

希望这在某种程度上有所帮助。

【讨论】:

以上是关于如何在 pandas/python 中查看 excel 电子表格的公式?的主要内容,如果未能解决你的问题,请参考以下文章

pandas,python - 如何在时间序列中选择特定时间

pandas python 怎么删除表格中的某一行

如何在 pandas python 中显示多个图表

Pandas Python DataFrame格式转换[重复]

如何在 pandas python 中填充一行

AFNetworking EXC_BAD_ACCESS (code=2, address=0x0) in downloadTask