You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python读取Strict Open XML格式的.xlsx文件?

解决Strict Open XML格式.xlsx文件的Python读取问题

针对Strict Open XML格式的.xlsx文件,常规pandas读取方法失效,这里提供两种可行的自动化解决方案:

方法一:利用openpyxl的Strict模式读取

openpyxl原生支持Strict Open XML标准,只需在pd.read_excel中指定引擎并传递strict参数即可:

import pandas as pd

# 读取Strict格式的xlsx文件
df = pd.read_excel(
    "your_strict_file.xlsx",
    engine="openpyxl",
    engine_kwargs={"strict": True}
)

注意:执行前确保已安装openpyxl,若未安装可运行pip install openpyxl。

方法二:手动解析XML内容(兜底方案)

如果上述方法仍有问题,可直接解压xlsx文件(本质是zip包)并解析内部的XML数据:

import zipfile
import xml.etree.ElementTree as ET
import pandas as pd

# Strict格式的XML命名空间
ns = {'ss': 'http://purl.oclc.org/ooxml/spreadsheetml/main'}

with zipfile.ZipFile("your_strict_file.xlsx", 'r') as zf:
    # 读取第一个工作表的XML文件,多工作表需遍历sheetN.xml
    with zf.open('xl/worksheets/sheet1.xml') as f:
        tree = ET.parse(f)
        root = tree.getroot()

# 提取行和单元格数据
rows = []
for row in root.findall('.//ss:row', ns):
    cell_values = []
    for cell in row.findall('.//ss:c', ns):
        # 获取单元格值,处理空值情况
        value_elem = cell.find('.//ss:v', ns)
        cell_values.append(value_elem.text if value_elem is not None else '')
    rows.append(cell_values)

# 转换为DataFrame,第一行作为表头
df = pd.DataFrame(rows[1:], columns=rows[0])

这种方法无需依赖第三方Excel处理库,直接操作底层XML,适合极端场景下的自动化流程。

内容的提问来源于stack exchange,提问作者Lucas Bueno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 13:22:13