是否可以复制单元格的 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 中重新打开它,重复但反向将它们转换回公式。
这可能比导入额外的模块更容易。
现在我正在努力将 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 中重新打开它,重复但反向将它们转换回公式。
这可能比导入额外的模块更容易。