首页 文章

从具有不同工作表名称的Excel工作表中刮取数据

提问于
浏览
1

我有许多excel电子表格,其中包含数据 . 我想找到所有excel电子表格,转到特定表格并查找特定单元格 . 每个电子表格对应于患者,其中一个工作表具有患者在特定细胞中接收的剂量 .

然后我可以绘制每张电子表格的 Value 随时间变化的情况 . 但是,在某些工作簿中,工作表被称为不同的东西,或者具有不同的索引值 . 是否有任何解决方案不涉及我手动重命名/移动我有的1000个电子表格工作表,所以它们都是相同的格式?

这是我有的代码,如果它们都在工作表索引5 .

#finds all excel files
import os

path = 'C:\Users\malonc01\Desktop\QC' 
files = os.listdir(path)

files_txt = [i for i in files if i.endswith('.xlsx')]
print files_txt

# Gets data from excel files:
import xlrd
Data = []
Time = []

for i in files_txt:
    workbook = xlrd.open_workbook(str(path) + "\\"  + str(i))
    worksheet1 = workbook.sheet_by_index(5) 
    Data.append(worksheet1.cell_value(10,8))

我能想到的唯一两个解决方案是:

如果您在每个工作表中搜索特定单元格中的文本(每个工作表的格式完全相同,只需要我想要的工作表的名称/索引不同) . 然后使用符合此条件的工作表 .

要么

如果工作表被称为X“或”Y然后打开它并找到单元格值 .

这两个选项我都找不到让它们工作的方法 . 我希望有人可以指出我正确的方向,找到最简单的解决方案 . 谢谢!

1 回答

  • 0

    首先,让我建议一种更好的方法来查找要扫描的Excel文件 -

    import glob
    files = glob.glob("C:\Users\User\Desktop\*.xlsx")
    

    至于你的问题,xlrd为你提供了一个名为sheets()的函数,它返回一个带有xlrd Sheet对象的列表 .

    你可以做的是获取Excel文件列表,迭代它们,对于每个文件,你可以迭代它的表格并获得你需要的数据 .

    for filename in files:
        workbook = xlrd.open_workbook(filename )
        for sheet in workbook.sheets():
            Data.append(sheet.cell_value(10,8))
    

相关问题