如何为现有Excel文件添加打印页眉/页脚且不丢失原有数据
如何在不丢失原有数据的前提下为Excel文件添加打印页眉
原代码的核心问题是使用了xlsxwriter作为引擎——xlsxwriter仅支持创建新Excel文件,无法直接修改现有文件。你的代码只是创建了空的新工作表并设置页眉,但没有将原文件中的数据写入这些新表,最终保存时直接覆盖了原文件,导致数据丢失。
正确的做法是使用支持读写现有Excel文件的库(比如openpyxl),它可以直接加载已有工作簿,修改打印设置后保存,完全保留原有数据。
修正后的代码
import openpyxl import glob import os def addExcelFile(locationPath, textAdd): # 遍历目标路径下所有xlsx文件(含子目录) for file in glob.glob(locationPath + '\\**\\*.xlsx', recursive=True): filename = os.path.basename(file) # 跳过Excel临时文件(以~$开头) if filename.startswith('~$'): print(f'跳过临时文件: {file}') continue print(f'正在处理文件: {file}') # 加载现有Excel工作簿,保留所有原有数据和格式 wb = openpyxl.load_workbook(file) # 根据指定文本设置对应页眉格式 if textAdd == 'LGE Confidential': # 格式:居中对齐、Tahoma粗体、14号字、红色(RGB: FF0000) header_content = f'&C&"Tahoma,Bold"&14&KFF0000{textAdd}' elif textAdd == 'LGE Internal Use Only': # 格式:居中对齐、Tahoma粗体、14号字、灰色(RGB: A9A9A9) header_content = f'&C&"Tahoma,Bold"&14&KA9A9A9{textAdd}' else: print(f"不支持的页眉文本: {textAdd},跳过当前文件") wb.close() continue # 为所有工作表设置页眉 for ws in wb.worksheets: # 设置奇数页页眉 ws.oddHeader = header_content # 若需要偶数页使用相同页眉,取消下方注释 ws.evenHeader = header_content # 保存修改后的工作簿 wb.save(file) wb.close() print(f'文件处理完成: {file}')
关键说明
openpyxl.load_workbook(file):直接加载现有Excel文件,完整保留原数据、格式和工作表结构。- 页眉格式控制符说明:
&C:页眉内容居中对齐&"Tahoma,Bold":指定字体为Tahoma粗体&14:设置字号为14&KXXXXXX:设置字体颜色(十六进制RGB值,需大写)
- 建议处理前备份重要Excel文件,避免意外问题导致数据丢失。
内容的提问来源于stack exchange,提问作者Thảo Nguyễn
相关产品推荐
相关产品推荐

