1
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'
4

3 回答 3

2

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

No such file or directory: 'File_1.xls'

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

于 2012-06-21T04:53:59.880 回答
1

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

另请注意,如果您尝试相对打开一个文件,它将使用初始化 python 解释器的当前工作目录来完成。

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

于 2012-06-21T05:00:16.027 回答
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) 
于 2012-06-21T05:44:39.613 回答