Python Xlrd导入.xslx模板,使用Openpyxl编辑并重新保存.xslx文件
Python Xlrd to import .xslx Template, the use Openpyxl to Edit and Re-save .xslx File
我有一个具有特定格式和对象的 .xslx 文件,用于我计划使用 Python 大规模生成的报告。我本来是用openpyxl加载模板的副本(openpyxl.load_workbook()),写一个Pandas数据帧到文件(openpyxl.dataframe_to_rows()),然后保存文件以备将来分发。我发现 openpyxl.load_workbook 不加载格式或对象,因此它们已从新文件中删除。然后尝试 xlrd 打开文件 (xlrd.open_workbook()),它正确加载了格式和对象。但是 openpyxl 将不再写入创建模板文件的空副本的文件。是否有另一个我可以使用的包可以自行处理 reading/writing 或我可以使用的包而不是 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 has no attribute 'save'" 和 "AttributeError: 'Sheet' object has no attribute 'append'"。
粘贴新数据后,我最终使用公式重新创建现有 Excel 文件中的任何格式。我仍然缺少对象(例如形状),但我的报告将在没有它们的情况下继续存在,直到我找到另一个解决方法。
我有一个具有特定格式和对象的 .xslx 文件,用于我计划使用 Python 大规模生成的报告。我本来是用openpyxl加载模板的副本(openpyxl.load_workbook()),写一个Pandas数据帧到文件(openpyxl.dataframe_to_rows()),然后保存文件以备将来分发。我发现 openpyxl.load_workbook 不加载格式或对象,因此它们已从新文件中删除。然后尝试 xlrd 打开文件 (xlrd.open_workbook()),它正确加载了格式和对象。但是 openpyxl 将不再写入创建模板文件的空副本的文件。是否有另一个我可以使用的包可以自行处理 reading/writing 或我可以使用的包而不是 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 has no attribute 'save'" 和 "AttributeError: 'Sheet' object has no attribute 'append'"。
粘贴新数据后,我最终使用公式重新创建现有 Excel 文件中的任何格式。我仍然缺少对象(例如形状),但我的报告将在没有它们的情况下继续存在,直到我找到另一个解决方法。