我有很多excel电子表格,里面有数据。我想找到所有的excel电子表格,转到一个特定的表格,并找到一个特定的单元格。每个扩展工作表对应于一个病人,其中一个工作表具有患者在特定细胞中接受的剂量。
然后,我可以画出每个价差表的值如何随时间变化。但是,在某些工作簿中,工作表被称为不同的东西,或者在不同的索引值下。是否有任何解决方案不涉及我手动重命名/移动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”,则打开它并找到单元格值。
这两种选择我都找不到办法让它们发挥作用。我希望有人能把我引向最简单的解决方案。谢谢!
发布于 2014-12-19 08:18:39
首先,让我建议一个更好的方法来找到你想要扫描的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))
https://stackoverflow.com/questions/27569807
复制