1. 当样式写入遭遇XML格式错误:问题现象解析
最近在用openpyxl处理Excel文件时,遇到了一个让人头疼的问题:程序运行时明明没有报错,但生成的Excel文件打开时却弹出"已删除的部件: 有XML错误的/xl/styles.xml(样式)"的警告。更奇怪的是,单元格的值修改是生效的,但字体颜色等样式设置却完全无效。
这种情况通常发生在处理从网络下载或第三方生成的Excel文件时。我遇到的具体场景是这样的:我需要修改一个从公司内部系统导出的订单表格,使用openpyxl的常规代码修改单元格值和字体颜色:
from openpyxl import load_workbook
from openpyxl.styles import Font, colors
wb = load_workbook('order.xlsx')
ws = wb.worksheets[0]
ws['A1'].value = '新订单'
ws['A1'].font = Font(color=colors.RED)
wb.save('modified_order.xlsx')
程序执行很顺利,没有任何错误提示。但当我打开生成的modified_order.xlsx文件时,Excel会弹出修复警告,点击修复后,A1单元格的值确实变成了"新订单",但字体颜色仍然是默认的黑色,而不是我设置的红色。
2. 深入理解Excel文件结构与样式存储机制
要解决这个问题,我们需要先了解Excel文件(.xlsx)的内部结构。xlsx文件本质上是一个ZIP压缩包,里面包含了一系列XML文件。当我们解压一个xlsx文件,可以看到这样的目录结构:
xl/
├── worksheets/
│ ├── sheet1.xml
│ └── ...
├── styles.xml
├── workbook.xml
└── ...
其中,styles.xml文件专门负责存储工作簿中的所有样式信息,包括字体、颜色、边框、填充等。当openpyxl尝试修改样式时,


231

被折叠的 条评论
为什么被折叠?



