-2
试图从文件中提取.xlsx文档并将数据编译为单个工作表。Python/Excel - TypeError:'Book'对象不可迭代
Receiving TypeError:'Book'对象不可迭代,但我没有标题为“Book”的对象。
所以,我想我的困惑是了解如何使工作簿迭代
程序如下
的Python 2.7
#-------------- loop that pulls in files from folder--------------
import os
#create directory from which to pull the files
rootdir = r'C:\Users\username\Desktop\Mults'
for subdir, dir, files in os.walk(rootdir):
for file in files:
open(os.path.join(subdir, file))
#----------------------merge work books-----------------------
import xlrd
import xlsxwriter
wb = xlsxwriter.Workbook('merged.xls')
ws = wb.add_worksheet()
for file in files:
filename = os.path.join(subdir, file)
r = xlrd.open_workbook(filename)
head, tail = os.path.split(file)
count = 0
for sheet in r:
if sheet.number_of_rows()>0:
count += 1
for sheet in r:
if sheet.number_of_rows()>0:
if count == 1:
sheet_name = tail
else:
sheet_name = "%s_%s" (tail, sheet.name)
new_sheet = wb.create_sheet(sheet_name)
new_sheet.write_reader(sheet)
new_sheet.close()
wb.close()
返回错误如下
Traceback (most recent call last):
File "C:\Users\username\Desktop\Work\Python\excel practice\xlsx - loops files - 09204.py", line 27, in <module>
for sheet in r:
TypeError: 'Book' object is not iterable
任何建议或更改?
此外,如果我正朝着正确的方向前进,有什么建议吗?
我是新来的蟒蛇世界,所以任何意见将不胜感激!
谢谢!
不会在'r'上迭代,而是在'r.worksheets'上迭代' – 2014-09-30 15:33:30
'r'是类型为Book的对象(表示工作簿),并且您试图遍历它,但它不会支持迭代。使用Google搜索确切的错误信息会导致您在SO和其他网站上发布多篇文章,详细描述发生此错误的原因 - 请在下次再做一些调查。根据[文档](https://secure.simplistix.co.uk/svn/xlrd/trunk/xlrd/doc/xlrd.html?p=4966#__init__.Book.sheets-method),您可以迭代'r.sheets()'代替。 – l4mpi 2014-09-30 15:35:09
@ 14mpi感谢您的快速回复!我确实做了研究并理解了这个概念,但并不理解这个问题的解决方案。我感谢你的时间 – 2014-09-30 15:40:14