繁体   English   中英

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

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

现在,我正在使用正在运行的熊猫将Excel工作表合并为1个新工作表。 唯一的问题是,新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项目,该项目一直有效,直到需要加载多张工作表为止。 这就是为什么我使用熊猫将多张纸写成一张纸的原因。

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

以下是测试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,然后屏幕中间会出现一个菜单,然后单击“替换”选项卡。

在“查找内容:”框中,键入“ =”,然后在“替换为:”框中,键入“。=“。 然后做所有替换。 这会将公式转换为文本供您复制。

将其另存为csv文件

注意:我知道这也将替换公式中的=符号。 没关系,它将继续。

合并它们后,将其打开并在excel中备份,然后重复上述步骤,但反过来将其转换回公式。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM