遍历excel文件并在每个文件中捕获特定的单元格值

我有一个来自客户端的参与表格(如excel文件)的目录,我想写一个脚本,它将抓取参与表单中的所有相关单元格,并将其写入一个excel文档,其中每个客户端都在自己的行上。 当我尝试使用下面的代码遍历目录:

import os import xlrd import xlwt from xlrd import open_workbook from xlwt import easyxf import pandas as pd from pandas import np import csv for i in os.listdir("filepath"): book=xlrd.open_workbook("filepath",i) print book sheet=book.sheet_by_index(0) a1=sheet.cell_value(rowx=8, colx=3) print a1 

我得到错误:IOError:[Errno 13]权限被拒绝:'filepath'

编辑这是完整的回溯后编辑build议由史蒂文·伦巴斯基

 Traceback (most recent call last): File "C:\Users\Me\Desktop\participation_form.py", line 11, in <module> book=xlrd.open_workbook(("Y:/Directory1/Directory2/Signup/", i)) File "c:\python27\lib\site-packages\xlrd\__init__.py", line 394, in open_workbook f = open(filename, "rb") TypeError: coercing to Unicode: need string or buffer, tuple found 

xlrd.open_workbook期望它的第一个参数是文件的完整path。 您正尝试打开文件夹而不是文件。 您需要join文件path和文件名。 做

 book = xlrd.open_workbook(os.path.join("filepath", i)) 

你也想防止试图打开不是excel文件的东西。 你可以添加这个作为你的循环的第一行:

 if not i.endswith((".xls", ".xlsx")): continue 

您可以使用pandas中的glob模块和.read_excel()方法来简化所有这些(您似乎正在导入)。 以下内容遍历某个目录中与“* .xlsx”匹配的所有文件,将其parsing为数据框,并打印出相应单元格的内容。

 from glob import glob for f in glob("/my/path/to/files/*.xlsx"): print pd.read_excel(f).ix[8,3]