使用openpyxl保存Excel文件时丢失原有页眉页脚问题求助
问题原因
openpyxl 默认加载现有 Excel 文件时,不会解析和保留页眉页脚这类打印布局属性。它的核心定位是处理单元格数据、样式等内容,对打印元数据的读取支持存在缺陷,因此直接加载后保存会丢失原有页眉页脚。
解决方案
方案1:使用win32com.client(Windows环境)
该库直接调用本地Excel应用程序,能完整保留所有文档属性,包括页眉页脚:
import win32com.client as win32 def modif_xlsx(): excel = win32.gencache.EnsureDispatch('Excel.Application') excel.Visible = False wb = excel.Workbooks.Open(r"test.xlsx") # 在这里添加你需要的文件修改操作 wb.SaveAs(r"test2.xlsx") wb.Close() excel.Quit() modif_xlsx()
方案2:使用xlwings(跨平台)
xlwings同样依赖本地Excel应用,支持Windows和macOS,能完整保留文档属性:
import xlwings as xw def modif_xlsx(): with xw.App(visible=False) as app: wb = xw.Book("test.xlsx") # 执行你的修改操作 wb.save("test2.xlsx") modif_xlsx()
方案3:openpyxl手动补全(仅适用于已知页眉页脚内容)
如果必须用openpyxl,只能手动设置与原文件一致的页眉页脚(因为openpyxl无法读取原有内容):
from openpyxl import load_workbook def modif_xlsx(): wb = load_workbook("test.xlsx") ws = wb['Feuil1'] # 替换为原文件的页眉页脚内容 ws.header_footer.center_header = "原文档页眉" ws.header_footer.center_footer = "原文档页脚" wb.save("test2.xlsx") modif_xlsx()
内容的提问来源于stack exchange,提问作者Arnaud2020 D
相关产品推荐
相关产品推荐

