是否可以复制单元格的 Excel 公式而不是使用 python 的值?

Is it possible to copy the Excel formula of a cell instead of the value using python?

现在我正在努力将 Excel sheet 组合成 1 个新的 sheet,使用 pandas 是可行的。 唯一的问题是新 Excel sheet 中的值是纯数字而不是公式,我想要公式。

正在加载文件

directory = os.path.dirname(__file__)
fname = os.path.join(directory, "Reisanalyze.xlsm")
print("Loading %s..." % fname)
sheet1 = pd.read_excel(fname, sheetname="Input")
sheet2 = pd.read_excel(fname, sheetname="Alternatieven")

写入新sheet

writer = pd.ExcelWriter('first_sheet.xlsx', engine='xlsxwriter')`**
sheet1.to_excel(writer, sheet_name='Input', merge_cells=False, startrow=0, startcol=0)
    sheet2.to_excel(writer, sheet_name='Input', merge_cells=False, startrow=0, startcol=21)

我最初尝试使用 pycel 项目,该项目一直有效,直到我需要加载多个 sheets,但它不起作用。这就是为什么我使用 pandas 将多个 sheet 写入 1 sheet.

您可以使用 OpenPyXL。阅读 here

以下是测试excel文件testexl.xlsx

    A       |   B
 ---------- | ------
 =SUM(B1:B2)|   1  
            |   2

以下为测试代码

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

输出

    0           1
0  =SUM(B1:B2)  1
1    None       2

如果您想保留 excel 个公式,则需要先阻止它们成为公式,然后再将它们转换回来。 为此,在转换之前,在键盘上执行 control/command+F,然后屏幕中间会出现一个菜单,然后单击替换选项卡。

在 "find What:" 框中键入“=”,并在 "replace with:" 框中键入“.=”。然后全部替换。 这会将公式转换为文本供您复制。

将其另存为 csv 文件

注意:我知道这也会替换公式中的 = 符号。没关系,都会过去的

合并它们后,在 excel 中重新打开它,重复但反向将它们转换回公式。

这可能比导入额外的模块更容易。