迭代excel文件并捕获每个文件中的特定单元格值

时间:2016-01-13 18:36:31

标签: python excel

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

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'

编辑以下是Steven Rumbalski建议编辑后的完整追溯

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

2 个答案:

答案 0 :(得分:1)

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

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

你也想防止尝试打开不是excel文件的东西。您可以将其添加为循环的第一行:

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

答案 1 :(得分:0)

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

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