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

现在我正在使用正在工作的pandas将Excel工作表合并到一个新工作表中。 唯一的问题是,新的Excel工作表内的值是普通数字,而不是公式,我想公式。

加载文件

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") 

写新的表格

 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项目,直到我需要加载多个工作表不工作,这就是为什么我用pandas写入多个工作表。

你可以使用OpenPyXL。 在这里阅读

以下是testingexcel文件testexl.xlsx

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

以下是testing代码

 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的公式,那么你将需要阻止他们成为公式,然后将其转换回来。 要做到这一点,转换之前,在你的键盘上,做控制/命令+ F然后菜单应该出现在屏幕中间然后点击replace选项卡。

在“find what:”框中input“=”,然后在“replace为:”框中键入“。=”。 然后做全部replace。 这将公式转换为文本供您复制。

将其另存为csv文件

注意:我知道这也会replace公式中的=符号。 没关系,它会走的。

合并它们后,在Excel中打开它,重复,但反过来将它们转换回公式。

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