首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用不同工作表名从Excel工作表中抓取数据

用不同工作表名从Excel工作表中抓取数据
EN

Stack Overflow用户
提问于 2014-12-19 16:12:26
回答 1查看 6K关注 0票数 1

我有很多excel电子表格,里面有数据。我想找到所有的excel电子表格,转到一个特定的表格,并找到一个特定的单元格。每个扩展工作表对应于一个病人,其中一个工作表具有患者在特定细胞中接受的剂量。

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

如果它们都在工作表索引5中,那么这就是我的代码。

代码语言:javascript
代码运行次数:0
运行
复制
#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”,则打开它并找到单元格值。

这两种选择我都找不到办法让它们发挥作用。我希望有人能把我引向最简单的解决方案。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-19 16:18:39

首先,让我建议一个更好的方法来找到你想要扫描的Excel文件-

代码语言:javascript
代码运行次数:0
运行
复制
import glob
files = glob.glob("C:\Users\User\Desktop\*.xlsx")

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

您可以做的是获取Excel文件的列表,对它们进行迭代,对于每个文件,您可以对其工作表进行迭代,并获得所需的数据。

代码语言:javascript
代码运行次数:0
运行
复制
for filename in files:
    workbook = xlrd.open_workbook(filename )
    for sheet in workbook.sheets():
        Data.append(sheet.cell_value(10,8))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27569807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档