使用python读取excel表时出错

时间:2012-06-21 04:50:51

标签: python

from xlrd import *

book = open_workbook("File_1.xls")

#sheet = book.sheets()[0]           
#book.sheets() returns a list of sheet objects...     alternatively...
#sheet = book.sheet_by_name("qqqq") #we can pull by name
 sheet = book.sheet_by_index(0)     #or by the index it has in excel's sheet collection

r = sheet.row(0)                    #returns all the CELLS of row 0,
c = sheet.col_values(0)             #returns all the VALUES of row 0,

for i in xrange(sheet.nrows):
print sheet.row_values(5) 

我正在读取我桌面上的文件,但是当我运行用python编写的脚本时,它给出了错误

  Traceback (most recent call last):
  File "C:\Python26\ReadXLS.py", line 6, in <module>
  book = open_workbook("File_1.xls")
  File "C:\Python26\Lib\site-packages\xlrd\__init__.py", line 449, in open_workbook
  ragged_rows=ragged_rows,
 File "C:\Python26\Lib\site-packages\xlrd\__init__.py", line 941, in biff2_8_load
 f = open(filename, open_mode)
  IOError: [Errno 2] No such file or directory: 'File_1.xls'

3 个答案:

答案 0 :(得分:2)

在运行Python之前需要cd Desktop,因为您的错误消息显示该文件不存在:

No such file or directory: 'File_1.xls'

另一个修复方法是将Python文件移动到与Excel文件相同的文件夹中。

答案 1 :(得分:1)

验证脚本和文件是否在目录中,或指定excel文件的绝对路径。

另请注意,如果您尝试相对打开文件,则可以使用当前工作目录来完成,其中初始化了python解释器。

如果您需要使用较新的xlsx格式,我还建议openpyxl http://packages.python.org/openpyxl/

答案 2 :(得分:1)

如果您遇到路径问题,请尝试在程序中找到当前路径

>>> import os.path
>>> import os
>>> os.curdir
'.'
>>> os.path.abspath(os.curdir)
'/Users/xxxx/temp'
>>> 

这就是它在Unix上的表现。它将在Windows上显示不同。

这样你就会知道,如果那是你当前文件的放置位置。

代码:

from xlrd import *
import os.path
import os
print os.path.abspath(os.curdir)

book = open_workbook("File_1.xls")
#sheet = book.sheets()[0]           
#book.sheets() returns a list of sheet objects...     alternatively...
#sheet = book.sheet_by_name("qqqq") #we can pull by name
 sheet = book.sheet_by_index(0)     #or by the index it has in excel's sheet collection

r = sheet.row(0)                    #returns all the CELLS of row 0,
c = sheet.col_values(0)             #returns all the VALUES of row 0,

for i in xrange(sheet.nrows):
print sheet.row_values(5)