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

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

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

25    =A1

现在显示:

25    25

我该怎么做?

【问题讨论】:

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

标签: python excel python-3.x pandas xlsx


【解决方案1】:

OpenPyXL 提供这种开箱即用的容量。请参阅 herehere。一个例子:

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)

【讨论】:

  • 我在实施时遇到问题:stackoverflow.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 分配到数据框中,反之亦然。 如果你想从大范围内获取公式,你也可以得到它,但它会返回元组。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 2018-06-16
      相关资源
      最近更新 更多