如何编辑此代码,以便它从多个 Excel 文件中的特定工作表中提取数据以显示在单独的文件中

问题描述 投票:0回答:1

我有Python代码,可以从多个Excel文件中获取数据,并将所选数据显示在单独的文件中以供进一步分析。它有效:

import os
import openpyxl

folder = 'D:\My Documents\Code\Data'
output_file = 'D:\My Documents\Code\Data\masterfile.xlsx'

output_wb = openpyxl.Workbook()
output_sheet = output_wb.active
output_sheet.title = 'masterfile'

cells = ['A2', 'B2', 'C2']

for filename in os.listdir(folder):
    if filename.endswith('.xlsx'):
        filename = os.path.join(folder, filename)
        workbook = openpyxl.load_workbook(filename)
        values = [workbook.active[cell].value for cell in cells]
        output_sheet.append(values)

output_wb.save(output_file)

但是,它只能从活动工作表中获取代码...这意味着如果我想从 Sheet2 获取数据,我必须使用 Sheet2 作为活动工作表保存所有 excel 文件(数百个),否则它将无法工作。所以我想我会尝试在代码本身中设置活动工作表,但它不起作用。我才学习 Python 一个月,而且我并不是一名职业编码员,而是一名处理大量生物数据的科学家。该代码不起作用,我需要帮助来修复它。

import os
import openpyxl

folder = 'D:\My Documents\Code\Data'
output_file = 'D:\My Documents\Code\Data\masterfile.xlsx'

wb = openpyxl.Workbook()

output_wb = openpyxl.Workbook()
output_sheet = output_wb.active
output_sheet.title = 'masterfile'

cells = ['A2', 'B2', 'C2']

for filename in os.listdir(folder):
    if filename.endswith('.xlsx'):
        filename = os.path.join(folder, filename)
        workbook = openpyxl.load_workbook(filename)
        workbook.active = workbook.sheetnames.index('Sheet2')
        values = [workbook.active[cell].value for cell in cells]
        output_sheet.append(values)

output_wb.save(output_file)

我尝试将活动工作表设置为 Sheet2,但它仅从存储原始 Excel 文件的活动工作表中获取数据。

我已尝试这些链接中的建议,但无济于事:

使用 openpyxl 设置活动工作表 如何在 Excel openpyxl Python 中的工作表之间切换进行更改 使用 openpyxl 按名称获取工作表

感谢所有帮助。

python openpyxl
1个回答
0
投票

活动工作表是保存工作簿时使用的可查看工作表,可以通过以下方式访问

sheet = wb.active

其中 wb 是工作簿对象。

如果您想选择工作簿中的任何其他工作表,则可以通过名称选择它;

sheet = wb['<sheet name>']

其中

<sheet name>
是工作表的名称。

此外,工作表的 names 包含在列表

wb.sheetnames
中,即这是一个字符串列表。 实际的工作表保存在列表中
wb.worksheets
。这些是实际的工作表对象,因此您可以通过以下方式循环遍历工作簿中的所有工作表;

for sheet in wb.worksheets:
    print(sheet.title)
    ... # do something with the worksheet object called 'sheet'
© www.soinside.com 2019 - 2024. All rights reserved.