使用Python打开xlsm文件时触发UserWarning:无法解析页眉页脚
嘿,我来帮你搞定这个问题~你用openpyxl打开xlsm文件时遇到的页眉页脚警告,其实很好处理,先理清楚来龙去脉:
你的问题场景
你写的Python代码是这样的:
# 导入库 import openpyxl from openpyxl import load_workbook from openpyxl import Workbook from openpyxl.styles import colors from openpyxl.styles import Color, PatternFill, Font, Border # 源工作表路径 path = "C:\\DATA\\PYTHON\\Practise\\SysTSAutSW300PFCRebuildDemo.xlsm" wb1 = load_workbook(path) sheet = wb1.get_sheet_by_name('PFC_Rebuild') celldata = sheet['L33'] print celldata
运行后弹出了这个警告:
警告(来自warnings模块):
文件 "C:\Python27\lib\site-packages\openpyxl\worksheet\header_footer.py",第49行
warn("""Cannot parse header or footer so it will be ignored""")
UserWarning: 无法解析页眉或页脚,因此将被忽略
问题原因
这个警告说白了就是:你的xlsm文件里的页眉/页脚用了openpyxl当前版本不支持的格式(比如Excel自带的特殊页眉样式,或者复杂的自定义格式),库解析不了,就告诉你它会跳过这些内容,但这不影响你读取工作表里的单元格数据——你的代码其实已经能正常获取celldata了对吧?
解决办法
如果看着这个警告闹心,有两个实用方案:
方案1:直接屏蔽警告
在代码最开头导入warnings模块,把这个特定的警告屏蔽掉就行:
import warnings # 屏蔽openpyxl的页眉页脚解析警告 warnings.filterwarnings("ignore", category=UserWarning, module="openpyxl") # 之后再写原来的导入和业务代码 import openpyxl from openpyxl import load_workbook # ... 剩下的代码不变
方案2:升级openpyxl版本
你用的是Python2.7搭配旧版openpyxl,新版本的openpyxl对页眉页脚的解析支持完善了很多,很多旧版本搞不定的格式在新版本里都能处理。不过要提醒一句:Python2.7已经停止维护了,如果条件允许,建议升级到Python3.x,再安装最新版openpyxl:
# Python3用pip3,Python2用pip pip install --upgrade openpyxl
另外给你提个小细节:你代码里的get_sheet_by_name在新版本openpyxl里已经被弃用了,建议换成wb1['PFC_Rebuild']来获取工作表,兼容性更好哦~
内容的提问来源于stack exchange,提问作者Sam

