2017-05-25 110 views
-1

我有一个.xslx文件,它具有特定的格式和对象,我正在使用这些文件来计划大规模生成的报告蟒蛇。我原本是openpyxl来加载模板的副本(openpyxl.load_workbook()),向文件中写入一个Pandas数据框(openpyxl.dataframe_to_rows()),然后保存该文件以备将来分发。我发现openpyxl.load_workbook不会加载格式或对象,因此它们将从新文件中删除。所以然后尝试xlrd打开文件(xlrd.open_workbook()),正确加载格式和对象。但是,openpyxl将不再写入创建模板文件的空副本的文件。是否有另一个我可以用来处理读/写的软件包,或者我可以用来代替openpyxl的软件包? Xlsxwriter也没有工作。查看下面的代码示例。Python Xlrd导入.xslx模板,使用Openpyxl编辑并重新保存.xslx文件

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的:‘书’对象有没有属性‘保存’”和“AttributeError错误:‘表’对象有没有属性‘追加’”从代码,如果任何人有对这些问题的建议。

+0

熊猫在阅读Excel文件时内部使用xlrd,但所有格式都将丢失,因为数据帧没有任何格式。 –

+0

不确定为什么反投票但xlrd会保留现有Excel文件中的所有格式和对象。我只需要找到一种方法来添加内容到文件而不覆盖任何现有的格式或对象。 – Abootman

回答

0

我最终使用公式重新粘贴了新数据后,在现有Excel文件中重新创建了任何格式。我仍然缺少物体(例如形状),但是我的报告只能在没有它们的情况下才能存在,除非我能找到另一种解决方法。