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

Posted

技术标签:

【中文标题】如何使用过滤的数据框更新现有 Excel 工作表的一部分?【英文标题】:how to update a portion of existing excel sheet with filtered dataframe? 【发布时间】:2019-05-31 12:19:49 【问题描述】:

我有一个包含几张工作表的 Excel 工作簿。我需要从其中一张表中读取一部分,获取过滤后的数据帧,然后将过滤后的数据帧中的单个值写入同一张表中的特定单元格。最好的方法是什么,最好不打开 Excel 工作簿?我需要在 linux 上运行它,所以不能使用 xlwings。我不想写整个工作表,而只是在其中选择一个单元格/偏移量。我尝试将以下内容写入现有工作表,但似乎对我不起作用(所需单元格没有更新):

with pd.ExcelWriter('test.xlsx', engine='openpyxl') as writer:
    writer.book = load_workbook('test.xlsx')
    df_filtered.to_excel(writer, 'Sheet_Name', columns=['CS'], startrow=638, startcol=96)

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

【问题讨论】:

【参考方案1】:

如果你只是写一个单元格,下面就足够了。

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)

我相信你的问题是你从来没有调用过 writer 的 save 方法。

【讨论】:

成功了,谢谢!我遇到的唯一其他问题是在执行 wb.save(filename) 之前需要关闭 Excel 工作簿 - 这是预期的行为吗?是否可以在打开 excel 时进行更新? openpyxl 通过直接编辑磁盘上的文件来工作,因此您加载到 ram 中的工作簿不会受到影响。如果您想在打开 excel 的情况下编辑电子表格 - 查看 xlwings - 它直接使用 excel。 我用过 xlwings,它确实可以在 excel open 上工作,但是,xlwings 有 Windows 依赖项,除非我遗漏了什么,否则不能在 linux 上工作。 没错,我不相信有明显的方法可以在 linux 上更新打开的电子表格。

以上是关于如何使用过滤的数据框更新现有 Excel 工作表的一部分?的主要内容,如果未能解决你的问题,请参考以下文章

Python Pandas - 如何在 Excel 工作表的特定列中写入

如何使用来自 msaccess 表的过滤数据填充 vb.net 中的组合框

从主文件创建多个Excel工作簿的最佳方法,文件必须使用带有多个工作表的现有模板

VBA研究如何将Excel工作表的内容更新到数据库

无法在不覆盖的情况下将 R 数据框附加到现有 Excel 中

无法将熊猫数据框附加到现有的 Excel 工作表