PythonXLRD要导入.xslx模板,请使用Openpyxl编辑并重新保存.xslx文件

PythonXLRD要导入.xslx模板,请使用Openpyxl编辑并重新保存.xslx文件,python,pandas,openpyxl,xlrd,shutil,Python,Pandas,Openpyxl,Xlrd,Shutil,我有一个带有特定格式和对象的.xslx文件,我计划使用Python大规模生成报告。我最初是openpyxl,负责加载模板的副本(openpyxl.load_工作簿()),将数据帧写入文件(openpyxl.dataframe_to_rows()),然后保存文件以备将来分发。我发现openpyxl.load_工作簿没有加载格式或对象,因此它们会从新文件中删除。因此,然后尝试xlrd打开文件(xlrd.open_workbook()),该文件正确加载了格式和对象。但是,openpyxl将不再写入该文

我有一个带有特定格式和对象的.xslx文件,我计划使用Python大规模生成报告。我最初是openpyxl,负责加载模板的副本(openpyxl.load_工作簿()),将数据帧写入文件(openpyxl.dataframe_to_rows()),然后保存文件以备将来分发。我发现openpyxl.load_工作簿没有加载格式或对象,因此它们会从新文件中删除。因此,然后尝试xlrd打开文件(xlrd.open_workbook()),该文件正确加载了格式和对象。但是,openpyxl将不再写入该文件,从而创建模板文件的空副本。我是否可以使用另一个包来自行处理读/写操作,或者使用另一个包来代替openpyxl?Xlsxwriter也不起作用。请参阅下面的代码示例

from xlrd import open_workbook
from openpyxl.utils.dataframe import dataframe_to_rows
import pandas as pd
import shutil

shutil.copy2('template.xlsx', 'new_report.xlsx')
book = open_workbook('new_report.xlsx')
writer = pd.ExcelWriter(book, engine='openpyxl')
ws = book.sheet_by_name('Sheet1')
    for r in dataframe_to_rows(result, index=False, header=False):
        ws.cell(colx=1, rowx=1)
        ws.append(r)
book.save('new_report.xlsx')

如果有人对这些问题提出建议,我也会从代码中得到错误:“AttributeError:‘Book’object没有属性‘save’”和“AttributeError:‘Sheet’object没有属性‘append’”。

粘贴新数据后,我使用公式重新创建了现有Excel文件中的任何格式。我仍然缺少对象(例如形状)但是,在我找到其他解决方法之前,我的报告将不会使用它们。

Pandas在读取Excel文件时在内部使用xlrd,但所有格式都将丢失,因为数据帧没有任何格式。不确定为什么否决投票,但xlrd将保留现有Excel文件中的所有格式和对象。我只需要找到一种在不覆盖任何现有格式或对象的情况下向文件添加内容的方法。