Python:将数据框写入到现有的Excel中,其中包含带有图像的工作表

时间:2018-07-03 12:12:19

标签: python excel pandas dataframe

我已经为此工作了太久了。我有一个带有一张带有图像的工作表(sheetname ='abc')的Excel,我想拥有一个Python脚本,该脚本在同一excel文件的第二张单独的工作表(sheetname ='def')上写一个数据框。谁能提供一些示例代码,因为每次我尝试编写数据框时,带有图像的第一张纸就会被清空。

这是我尝试过的:

book = load_workbook('filename_of_file_with_pictures_in_it.xlsx')
writer = pd.ExcelWriter('filename_of_file_with_pictures_in_it.xlsx', engine = 'openpyxl')
writer.book = book

x1 = np.random.randn(100, 2)
df = pd.DataFrame(x1)

df.to_excel(writer, sheet_name = 'def')
writer.save()
book.close()

它将随机数保存在名为“ def”的工作表中,但是第一张工作表“ abc”现在变为空。

这里出了什么问题?希望有人可以帮助我。

2 个答案:

答案 0 :(得分:2)

有趣的问题!使用openpyxl,您可以轻松添加值,保留公式但不能保留图形。在最新版本(2.5.4)中,图形也不会保留。所以,我决定用 xlwings

import xlwings as xw
wb = xw.Book(r"filename_of_file_with_pictures_in_it.xlsx")
sht=wb.sheets.add('SheetMod')
sht.range('A1').value = np.random.randn(100, 2)
wb.save(r"path_new_file.xlsx")

通过此代码段,我设法插入了一组随机值并保存了修改后的xlsx的新副本。当您插入命令时,excel文件将自动打开以向您显示新工作表-而不更改现有工作表(图形和公式)。确保安装所有相互依赖性,以使xlwings在系统中运行。希望这会有所帮助!

答案 1 :(得分:0)

为此,您需要将Excel'reader'(例如Openpyxl或类似的东西)与Pandas结合使用,pandas的to_excel函数仅可写入,因此在打开文件时它不会在意文件中的内容。