首页 > 解决方案 > 将excel公式保存在DataFrame中,然后写入excel

问题描述

有一个小的数据框df。我想将其写入 Excel,以便 B 列包含公式:B=A+C

df = pd.DataFrame(np.random.randint(0,1000,size=(3,3)), columns=list('ABC'))
df['B']='=RC[-1]+RC[1]'
with pd.ExcelWriter(r'C:\Users\belose\Downloads\output.xlsx', engine='openpyxl', mode='w')as writer:
    df.to_excel(writer, sheet_name='Sheet1',  index=False)

然后 Excel 根本无法识别 B 列的内容并发送错误消息。 在此处输入图像描述

我做错了什么?

标签: pythonpandasopenpyxl

解决方案


试试这个公式:

df = pd.DataFrame(np.random.randint(0,1000,size=(3,3)), columns=list('ABC'))
df['B'] = '=INDIRECT("R[0]C[-1]", 0)+INDIRECT("R[0]C[1]", 0)'

with pd.ExcelWriter(r'output.xlsx', engine='openpyxl', mode='w')as writer:
    df.to_excel(writer, sheet_name='Sheet1',  index=False)

输出:

在此处输入图像描述

您也可以通过给出“A”和“C”列相对于“B”的位置而不是 -1 和 1 来即兴发挥这一点。

df['B'] = '=INDIRECT("R[0]C[%s]", 0)+INDIRECT("R[0]C[%s]", 0)'%\
          (df.columns.get_loc('A') - df.columns.get_loc('B'),
           df.columns.get_loc('C') - df.columns.get_loc('B'))

推荐阅读