用python处理大型XLSX文件

2024-06-10 21:12:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很大的xlsxexcel文件(56mb,550k行),我试图从中读取前10行。我试过使用xlrdopenpyxlpyexcel-xlsx,但它们总是需要35分钟以上,因为它会将整个文件加载到内存中。

我解压缩了Excel文件,发现包含我需要的数据的xml解压缩了800mb。

在Excel中加载同一个文件需要30秒。我想知道为什么用Python要花那么多时间?


Tags: 文件数据内存时间xmlpyexcelxlsxexcel
2条回答

使用openpyxl's read-only mode执行此操作。

您可以立即使用相关工作表。

就这样,我找到了解决办法。最快的方法来读取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()

享受和快乐的编码。

相关问题 更多 >