打开并阅读python中的excel .xlsx文件

我试图用python打开一个excel .xlsx文件,但我无法find一个方法来做到这一点,我试过使用pandas,但它想要使用一个名为NumPy的库我试图安装numpy,但它仍然可以没有发现numpy。

我也尝试使用xlrd库,但我得到以下回溯:

Traceback (most recent call last): File "C:\test.py", line 3, in <module> book = open_workbook('test.xlsx') File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 370, in open_workbook biff_version = bk.getbof(XL_WORKBOOK_GLOBALS) File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 1323, in getbof raise XLRDError('Expected BOF record; found 0x%04x' % opcode) XLRDError: Expected BOF record; found 0x4b50 

我认为是因为XLRD无法读取.xlsx文件?

任何人有任何想法?

编辑:

 import csv with open('test.csv', 'rb') as csvfile: data = csv.reader(csvfile, delimiter=',') for row in data: print "------------------" print row print "------------------" for cell in row: print cell 

也许你可以导出你的.xlsx到一个.csv文件?

然后你可以尝试:

 import csv with open('file.csv','rb') as file: contents = csv.reader(file) [x for x in contents] 

这可能是有用的: http : //docs.python.org/2/library/csv.html#csv.reader

希望有所帮助!

编辑:

如果你想定位一个特定的单元格,比如F13,你可以创build一个像matrix一样的嵌套列表,并且它们引用每个元素:

 import csv with open('file.csv','rb') as file: contents = csv.reader(file) matrix = list() for row in contents: matrix.append(row) 

然后用matrix[5][12]访问F13。

PS:我没有testing这个。 如果“行”是每个单元格作为一个元素的列表,你不断追加所有行到matrix,所以第一个索引是行号,第二个是列号。

看来你是在一个Linux发行版。 我也有同样的问题,这不会发生“xlwt”库,但只有“xlrd”。 我所做的并不是解决这个问题的正确方法,但它使得事情暂时有效,希望能很快回答这个问题;我已经在Windows上安装了“xlrd”,并将该文件夹粘贴到Linux中目录,我的Python代码是和它的工作。

因为我知道别人也会读这个 –

你可以安装下面的模块(它不会自动) https://pypi.python.org/pypi/openpyxl

您可以阅读以下内容,以便了解如何使用它

https://automatetheboringstuff.com/chapter12/