如何根据特定的字符串值从Excel电子表格中提取工作表的内容

时间:2019-04-19 17:19:57

标签: python excel

我想循环浏览单个文件夹中的许多Excel文件,并仅在某些选项卡包含某个字符串值的情况下提取某些选项卡中包含的信息。因此,例如,一个电子表格可能有20个标签,但我只希望在该标签中某处包含字符串“ Apples”的标签(及其信息)。 (看起来它总是位于第一行)。然后,我想将所有这些选项卡聚合到一个电子表格中。这个问题与以前的SO问题是不同的,因为我的标签页名称不统一。有时,我想要的选项卡称为“ Apple Sauce”,而其他时候则称为“ Apple Jacks”。这就是为什么我需要在选项卡本身中查找字符串,而我不能仅指定工作表名称的原因。

到目前为止,我已经编写了以下代码:

    import pandas as pd
    import os

    root = r"my_dir"

    agg_df = pd.DataFrame()

    for directory, subdirectory, files in os.walk(root):
        for file in files:
            if file.endswith('.xlsm'):
                filepath = os.path.join(directory, file)
# I want to do some kind of if statement here maybe to say if sheet_name.contains("Apples")
                df_temp = pd.read_excel(filepath)
                df_temp['Filepath'] = filepath
                agg_df = agg_df.append(df_temp)

1 个答案:

答案 0 :(得分:0)

您可以将re模块与ExcelFile函数一起使用来读取工作表名称,并对其进行迭代以读取满足某些正则表达式条件的每张工作表。

import pandas as pd
import os
import re

root = r"Directory_path"

agg_df = pd.DataFrame()

for directory, subdirectory, files in os.walk(root):
    for file in files:
        if file.endswith('.xlsm'):
            filepath = os.path.join(directory, file)
            xls = pd.ExcelFile(filepath)
            for i in xls.sheet_names:
                if re.search(r'Apple', i):
                    df_temp = pd.read_excel(filepath, sheet_names=i)
                    #Continue the data processing that you want to carry on here and append the result to a dataframe