如何用Python从大Excel表中提取特定行数据?

-2 投票
4 回答
6086 浏览
提问于 2025-04-16 01:15

我需要从一个包含特定关键词(比如名字)的数据行中提取信息,并把这些信息写入另一个文件。起始文件是一个1.5 GB的Excel文件。我不能直接打开它然后另存为其他格式。我该如何用Python来处理这个问题呢?

4 个回答

0

我没用过这个,不过xlrd看起来可以很好地读取Excel数据。

1

听起来你有一个用Excel 2007创建的电子表格,但你只有Excel 2003。

Excel 2007可以创建有1,048,576行和16,384列的工作表,而Excel 2003只能处理65,536行和256列。因此,你无法在Excel中打开整个工作表。

如果这个工作簿只是尺寸更大,那么xlrd应该可以用来读取这个文件。但如果文件实际上超出了你电脑的内存(我觉得这不是问题,因为你可以用EditPad lite打开这个文件),那么你就需要找其他方法,因为xlrd会把整个工作簿加载到内存中。

假设是第一种情况:

import xlrd

wb_path = r'c:\bigfile.xls'
output_path = r'c:\output.txt'

wb = xlrd.open(wb_path)
ws = wb.sheets()[0]  # assuming you want to work with the first sheet in the workbook

with open(output_path, 'w') as output_file:
    for i in xrange(ws.nrows):
        row = [cell.value for cell in ws.row(i)]

        # ... replace the following if statement with your own conditions ...
        if row[0] == u'interesting':
            output_file.write('\t'.join(row) + '\r\n')

这会给你一个以制表符分隔的输出文件,应该可以在Excel中打开。

编辑:

根据你对John Machin问题5的回答,确保在你的C盘根目录下有一个名为'bigfile.xls'的文件。如果文件不在那儿,请把wb_path改成你想打开的文件的正确位置。

3

我是xlrd的作者和维护者。请你修改一下你的问题,提供以下几个方面的信息。[在StackOverflow的评论里看到这些内容非常难以阅读]

  1. 这个文件有多大,单位是MB?["巨大"这样的描述没有什么用]

  2. 这个文件是用什么软件创建的?

  3. 你电脑的内存有多少?

  4. 当你尝试用Excel打开这个文件时,具体发生了什么?请详细解释一下“我可以部分打开”的意思。

  5. 当你用xlrd.open_workbook尝试打开"C:\bigfile.xls"时,具体出现了什么错误信息?请把你运行的脚本、完整的错误追踪信息和错误消息都包括上。

  6. 你使用的是什么操作系统?Python的版本是多少?xlrd的版本又是多少?

  7. 你知道这个文件里有多少个工作表吗?

撰写回答