我需要获取具有某些关键字的特定数据行(名称)并将其写入另一个文件。起始文件是1.5 GB的Excel文件。我不能打开它并将其保存为不同的格式。我应该如何使用python处理它?</ p>
答案 0 :(得分:3)
我是xlrd的作者和维护者。请编辑您的问题以提供以下问题的答案。 [SO评论中的这些内容非常难以阅读]
MB中的文件有多大? [“巨大”不是一个有用的答案]
什么软件创建了文件?
您的计算机上有多少内存?
当您尝试使用Excel打开文件时会发生什么?请解释“我可以部分打开它。”
当您尝试使用xlrd.open_workbook
脚本打开“C:\ bigfile.xls”时,您会得到什么错误消息?包括您运行的脚本,完整的回溯和错误消息
什么操作系统,什么版本的Python,什么版本的xlrd?
您知道文件中有多少张工作表吗?
答案 1 :(得分: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
更改为您要打开的文件的正确位置。
答案 2 :(得分:0)
我没有使用它,但是xlrd看起来在读取Excel数据方面做得很好。
答案 3 :(得分:0)
您的问题是您使用的是Excel 2003 ..您需要使用更新版本才能读取此文件。 2003年不会打开大于1M行的文件。