Python Xlrd导入.xslx模板,使用Openpyxl编辑并重新保存.xslx文件

时间:2017-05-25 19:23:41

标签: python pandas openpyxl xlrd shutil

我有一个.xslx文件,其中包含我用于使用Python大规模生成的报表的特定格式和对象。我最初是openpyxl来加载模板的副本(openpyxl.load_workbook()),将Pandas数据帧写入文件(openpyxl.dataframe_to_rows()),然后保存文件以供将来分发。我发现openpyxl.load_workbook没有加载格式或对象,所以它们从新文件中删除。然后尝试使用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'对象没有属性'save'”和“AttributeError:'Sheet'对象没有来自代码的属性'append'”,如果有人对这些问题有建议

1 个答案:

答案 0 :(得分:0)

我最终使用公式在粘贴新数据后重新创建现有Excel文件中的任何格式。我仍然缺少对象(例如形状)但我的报告将在没有它们的情况下存在,直到我找到另外的工作。