我有一个如下所示的 Dataframe
Date,cust,region,Abr,Number,
12/01/2010,Company_Name,Somecity,Chi,36,
12/02/2010,Company_Name,Someothercity,Nyc,156,
df = pd.read_clipboard(sep=',')
我希望将此 Dataframe 写入文件output.xlsx
中的特定工作表(称为temp_data
所以我试了下面的
import pandas
from openpyxl import load_workbook
book = load_workbook('output.xlsx')
writer = pandas.ExcelWriter('output.xlsx', engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
我也试过下面的
path = 'output.xlsx'
with pd.ExcelWriter(path) as writer:
writer.book = openpyxl.load_workbook(path)
final_df.to_excel(writer, sheet_name='temp_data',startrow=10)
writer.save()
但我不确定我是否过于复杂。我得到一个错误,如下图所示。但我在任务管理器中验证,没有excel文件/任务正在运行
BadZipFile:文件不是zip文件
此外,我也失去了我的格式的output.xlsx
文件时,我设法写的文件基于以下建议。我已经有一个整齐的格式化字体,颜色文件等,只需要把数据里面。
有没有办法将Pandas数据框写入现有excel文件中的特定工作表?而不会丢失目的地文件的格式
5条答案
按热度按时间dw1jzc5e1#
您只需使用panda Dataframe 中的
to_excel
。尝试以下片段:
如果存在现有数据,请尝试以下片段:
roqulrg32#
您是否仅限于使用panda或openpyxl?因为如果您习惯使用其他库,最简单的方法可能是使用win32com来傀儡excel,就好像您是一个手动复制和粘贴信息的用户一样。
如果这能达到你的目的请告诉我。
p3rjfoxz3#
我花了一整天的时间在这上面(我的一个同事花了更长的时间)。谢天谢地,这似乎符合我的目的--将 Dataframe 粘贴到Excel工作表中,而不更改任何Excel源格式。它需要
pywin32
包,该包使用VBA“驱动”Excel,就像它是用户一样。一般来说,当使用
win32com
方法时,记录自己(使用宏)在Excel中执行的操作,然后阅读生成的宏代码是很有帮助的。通常,这会为您提供关于可以调用哪些命令的极好线索。0s7z1bwu4#
您的问题的解决方案存在于此处:How to save a new sheet in an existing excel file, using Pandas?
要从df添加新页面:
xbp102n05#
您可以尝试xltpl。
基于output.xlsx文件创建样板文件。
使用您的数据渲染文件。
参见examples。