我先尝试了市面上常见的几套方案:
| 方法 | 描述 | 性能结果 | 结论 |
| pandas | 方便但会一次性加载大内存 | 20–40 秒 | 太慢 |
| openpyxl | 原生解析 xlsx | 60 秒以上 | 最慢 |
| pyxlsb | 解析 xlsb 二进制 | ~3min30s | 可用但不够 |
| CSV(Excel 转 UTF-8) | 纯文本读取 | 9 秒内 | 最快方案,无可争议 |
👉 大量资料与 GPT 的技术建议都指向:CSV 是读取速度最快的格式(文本解析远快于 XML / PKG 结构)
但第一次用 CSV 时却发现速度不够快,排查后发现:
❌ 用代码转换 xlsx → csv,非常慢
✅ 用原生 Excel 手动转换为 CSV UTF-8,性能最高 (WPS 转的 CSV 不是 UTF-8,会导致解析异常,不推荐)
最终测试:CSV UTF-8 格式 → 读取 80 万行,仅需 8–9 秒
性能提升超过20 倍。
方案一(对比用):XLSB 版本(3.5 分钟)
from pyxlsb import open_workbook def read_xlsb_to_3d_list(file_path, sheet_name, chunk_size=10000): result = [] current_chunk = [] row_count = 0 with open_workbook(file_path) as wb: with wb.get_sheet(sheet_name) as sheet: for i, row in enumerate(sheet.rows(), start=1): if i == 1: continue row_data = [cell.v for cell in row] current_chunk.append(row_data) row_count += 1 if row_count % chunk_size == 0: result.append(current_chunk) current_chunk = [] if current_chunk: result.append(current_chunk) return result优点:能直接读取 xlsb缺点:速度慢,不适合百万级数据
最终推荐方案:CSV 超高速版本(9 秒内)
性能最佳的做法流程
用 Excel 手动把
.xlsx转为.csv (UTF-8)使用下面的纯 Python CSV 流式读取代码
高性能 CSV 方案代码
import csv def read_csv_as_3d_list(csv_path, batch_size=10000, encoding="utf-8"): all_data = [] batches = [] current_batch = [] with open(csv_path, "r", encoding=encoding, newline="") as f: reader = csv.reader(f) next(reader, None) # 跳过表头 for row in reader: all_data.append(row) current_batch.append(row) if len(current_batch) >= batch_size: batches.append(current_batch) current_batch = [] if current_batch: batches.append(current_batch) return [all_data, batches]实测结果(80 万行)
⏱ 耗时:8–10 秒
✔ 内存占用稳定
✔ 三维结构满足 RPA 使用场景
✔ 影刀流程执行无卡顿
经验总结
格式比工具更重要:CSV 是绝对的性能王者
XLSX 是压缩包 + XML,需要大量解析成本。
CSV 是纯文本,解析速度是数量级优势。
不推荐用 WPS 转 CSV
WPS 导出的 CSV 默认编码不是 UTF-8,会导致解析异常。
大文件一定要流式读取
不要一次性加载 DataFrame,否则内存和 CPU 都会爆。
每 1 万行切片是最佳折中
可兼顾可视化和后续处理的性能。