首页 > 解决方案 > 遍历多个 Excel 文件,使用 python 将特定单元格保存到数据框中

问题描述

问题:我想遍历 Excel 文件并提取特定值并保存到数据框。

原因:这有助于 QA 流程,通过循环,我可以将所有报告拉到一个文件夹中并快速保存关键数据点。当前过程包括打开每个文件并将某些单元格复制并粘贴到“主 QA”xlsx 文件中

示例:我们在一个文件夹中有三个文件 在此处输入图像描述

他们都有两个数据点Datecount单元格B4和单元格C4与数据点

每个文件的两个数据点

我们可以使用打印每个文件的每个数据点openpyxl

import os 
import openpyxl
import pandas as pd

path=r"C:\Users\Desktop\StackOverflow"
os.chdir(path)

for resi_files in os.listdir(path):
     if os.path.isfile(resi_files):
                myworkbook=openpyxl.load_workbook(resi_files)
                worksheet= myworkbook['Sheet1']
                print(resi_files)
                print("Date")
                print(worksheet.cell(4, 2).value)
                print("count")
                print(worksheet.cell(4, 3).value)

这将为我们提供以下输出:

在此处输入图像描述

然而!这对我们没有任何好处,我们希望能够比较不同的单元格值以进行质量检查。所以我们需要将这些值保存到数据框中。

标签: pythonexcelpandasopenpyxl

解决方案


要保存到数据框,我们必须执行以下操作:

import os 
import openpyxl
import pandas as pd
import numpy as np #added to save count as a number

path=r"C:\Users\Desktop\StackOverflow"
os.chdir(path)

merged=pd.DataFrame()
for resi_files in os.listdir(path):
     if os.path.isfile(resi_files):
                myworkbook=openpyxl.load_workbook(resi_files)
                worksheet= myworkbook['Sheet1']
                data = pd.DataFrame(data=[worksheet.cell(4, 2).value], columns= ['Date'])
                data['count'] = np.array([worksheet.cell(4, 3).value])
                    # to grab a different cell, change the 4 and 3 
                    # 4 means 4 rows down, 3 is 3 columns over, not indexed at 0
                merged=pd.concat([merged,data])

通过打印merged,我们看到我们有一个更易于使用的数据框。


推荐阅读