在python中处理大型XLSX文件
我有一个大的xlsx Excel文件(56MB,550k行),我试图从中读取前10行。我尝试使用xlrd
,openpyxl
和pyexcel-xlsx
,但是它们总是花费超过35分钟,因为它将整个文件加载到内存中。在python中处理大型XLSX文件
我解压缩了Excel文件,发现包含我需要的数据的xml
是800mb解压缩。
当您在Excel中加载相同的文件需要30秒。我想知道为什么在Python中需要那么多时间?
使用openpyxl's read-only mode来做到这一点。
您将可以立即使用相关工作表。
我已经这样做了,但它在开始逐行读取之前将整个文件加载到内存中。 – Amine
不,它不会将整个文件读入内存。大概你没有正确使用它。 –
这是它,我找到了一个解决方案。读取xlsx表格的最快方法。
56MB超过500K行的文件和4张纸花6S继续。
import zipfile
from bs4 import BeautifulSoup
paths = []
mySheet = 'Sheet Name'
filename = 'xlfile.xlsx'
file = zipfile.ZipFile(filename, "r")
for name in file.namelist():
if name == 'xl/workbook.xml':
data = BeautifulSoup(file.read(name), 'html.parser')
sheets = data.find_all('sheet')
for sheet in sheets:
paths.append([sheet.get('name'), 'xl/worksheets/sheet' + str(sheet.get('sheetid')) + '.xml'])
for path in paths:
if path[0] == mySheet:
with file.open(path[1]) as reader:
for row in reader:
print(row) ## do what ever you want with your data
reader.close()
享受和快乐的编码。
这并不“读取”文件只是遍历XML。在阅读Excel文件时,大部分时间都是从XML转换为相关的Python结构。 –
这由openpyxl文档覆盖。 –
http://stackoverflow.com/questions/38208389/how-to-stream-in-and-manipulate-a-large-data-file-in-python –
可能的重复[是openpyxl最快的软件包来读取大xlsx文件?](http://stackoverflow.com/questions/23796587/is-openpyxl-the-fastest-package-to-use-to-read-big-xlsx-files) –