如何使用过滤后的数据框更新现有excel工作表的一部分?

如何使用过滤后的数据框更新现有excel工作表的一部分?,excel,pandas,pandas.excelwriter,Excel,Pandas,Pandas.excelwriter,我有一本excel工作簿,里面有几张表格。我需要从其中一个工作表中读取一部分,获取一个过滤后的数据框,并将该过滤后的数据框中的单个值写入同一工作表中的特定单元格。理想情况下,在不打开excel工作簿的情况下,实现这一目标的最佳方法是什么?我需要在linux上运行这个,所以不能使用xlwings。我不想写整个工作表,只想在其中写一个选定的单元格/偏移量。我尝试将以下内容写入现有工作表,但似乎对我不起作用(所需单元格中没有更新): 任何提示都会有帮助。谢谢。如果你只写一个单元格,下面的内容就足够了

我有一本excel工作簿,里面有几张表格。我需要从其中一个工作表中读取一部分,获取一个过滤后的数据框,并将该过滤后的数据框中的单个值写入同一工作表中的特定单元格。理想情况下,在不打开excel工作簿的情况下,实现这一目标的最佳方法是什么?我需要在linux上运行这个,所以不能使用xlwings。我不想写整个工作表,只想在其中写一个选定的单元格/偏移量。我尝试将以下内容写入现有工作表,但似乎对我不起作用(所需单元格中没有更新):


任何提示都会有帮助。谢谢。

如果你只写一个单元格,下面的内容就足够了

import pandas as pd
import openpyxl

df = pd.DataFrame(data=[1,2,3], columns=['col'])
filtered_dataframe = df[df.col == 1].values[0][0]

filename = 'test.xlsx'
wb = openpyxl.load_workbook(filename)
wb['Sheet1'].cell(column=1, row=2, value=filtered_dataframe)
wb.save(filename)

我相信你的问题在于你从未调用过作者的保存方法。

这就成功了,谢谢!我遇到的另一个问题是,在执行wb.save(文件名)之前,需要关闭Excel工作簿-这是预期的行为吗?当excel保持打开状态时,是否可以进行更新?openpyxl的工作原理是直接编辑磁盘上的文件,以便加载到ram中的工作簿不会受到影响。如果您想使用excel open编辑电子表格-查看xlwings-它直接使用excel。我使用过xlwings,它确实可以使用excel open,但是,xlwings具有windows依赖性,在linux上无法工作,除非我遗漏了什么。没错,我不相信有明显的方法可以在linux上更新打开的电子表格。
import pandas as pd
import openpyxl

df = pd.DataFrame(data=[1,2,3], columns=['col'])
filtered_dataframe = df[df.col == 1].values[0][0]

filename = 'test.xlsx'
wb = openpyxl.load_workbook(filename)
wb['Sheet1'].cell(column=1, row=2, value=filtered_dataframe)
wb.save(filename)