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

如何用Python自动将批量.xps文件数据提取至单个.xlsx文件?

批量提取XPS文件中特定字符串数据并汇总至Excel的最佳实现方案

你选的PyMuPDF、pandas、openpyxl这套工具链完全可行,下面是优化后的完整实现方案,以及你可能遗漏的关键环节:

一、核心步骤优化与关键细节

1. XPS文本提取与精准匹配

PyMuPDF读取XPS时只会提取纯文本,自动跳过图表/图片,刚好符合你的需求。针对value1=0.434这类格式的目标数据,正则表达式是最精准的定位方式:

  • 用正则r'value(\d+)=([\d.]+)'可以批量捕获所有valueN=数值格式的内容
  • 遍历每个XPS文件的每一页文本,一次性提取所有符合规则的键值对

2. 数据结构化的关键补全

你可能遗漏的核心点:

  • 不同XPS文件可能存在变量缺失(比如有的只有value1、value3,没有value2),需要统一列名,缺失值自动补NaN
  • 必须记录每个数据对应的源文件名,方便后续数据溯源排查

3. 高效批量处理优化

  • 用os.walk遍历目标文件夹下所有.xps文件,无需手动整理文件名列表
  • 加入tqdm进度提示,处理数千个文件时能直观看到进度

4. Excel导出的稳定性优化

  • 用pandas.ExcelWriter配合openpyxl引擎,支持大文件分块写入,避免内存溢出
  • 自动将提取的数值转为浮点型,避免Excel中存为文本格式

二、完整可运行代码示例

import os
import re
import pandas as pd
import fitz  # PyMuPDF
from tqdm import tqdm

# 定义正则规则,匹配valueN=数值格式(支持等号前后带空格的变体)
pattern = re.compile(r'value(\d+)\s*=\s*([\d.]+)')

# 存储所有文件数据的列表
all_data = []

# 替换为你的XPS文件所在文件夹路径
target_dir = "./xps_files"

# 批量遍历处理所有XPS文件
for root, _, files in os.walk(target_dir):
    for file in tqdm(files):
        if not file.endswith(".xps"):
            continue
            
        file_path = os.path.join(root, file)
        file_data = {"源文件名": file}  # 记录源文件
        
        # 打开并读取XPS文件
        doc = fitz.open(file_path)
        for page in doc:
            text = page.get_text()
            # 提取所有匹配的键值对
            matches = pattern.findall(text)
            for num, val in matches:
                key = f"value{num}"
                file_data[key] = float(val)  # 转为数值类型
                
        doc.close()
        all_data.append(file_data)

# 转换为DataFrame,自动补全缺失列
df = pd.DataFrame(all_data)

# 导出到Excel
output_path = "xps数据汇总.xlsx"
with pd.ExcelWriter(output_path, engine='openpyxl') as writer:
    df.to_excel(writer, index=False, sheet_name="数据汇总")

print(f"处理完成,结果已保存至{output_path}")

三、特殊情况处理提示

  • 如果目标数据有大小写变体(比如Value1=0.434),可以把正则改成r'[Vv]alue(\d+)\s*=\s*([\d.]+)'
  • 若部分XPS文本提取异常,尝试用page.get_text("text")指定纯文本提取模式,或者检查文件是否损坏
  • 处理超大规模文件时,可以每处理100个文件就写入一次Excel,避免内存占用过高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:42:14