我有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文件存储的活动工作表中获取数据.

我try 了这些链接中的建议,但无济于事:

Set the active sheet with openpyxl. How to switch between sheets in Excel openpyxl Python to make changes. 一百零二

感谢任何人的帮助.

推荐答案

您不会遗漏任何模块

Select 工作表的快速教程

活动工作表是保存工作簿时查看的工作表,可以访问为

sheet = wb.active

其中'Or'是Openpyxl工作簿对象.这也是创建新工作簿时的默认工作表.

如果您想 Select 工作簿中的任何其他工作表,则可以按名称 Select ;

sheet = wb['<sheet name>']

其中<sheet name>是工作表的名称(在Openpyxl中也称为‘title’).

此外,表names个包含在列表wb.sheetnames中,即,这是仅作为串的表的名称的列表.

实际的worksheet objects被保存在列表wb.worksheets中.
这些是实际的工作表对象,所以如果你想处理工作簿中的每一个工作表,你可以循环通过所有的工作表;

for sheet in wb.worksheets:
    print(sheet.title)
    # do something with the worksheet object 'sheet' having title ...

因此也可以使用其索引来 Select ;

sheet = wb.worksheets[X]

其中X是所需工作表的索引.

Python相关问答推荐

如何找到满足各组口罩条件的第一行?

在极性中创建条件累积和

在Django admin中自动完成相关字段筛选

提取相关行的最快方法—pandas

如何使用Pandas DataFrame按日期和项目汇总计数作为列标题

用砂箱开发Web统计分析

Python Tkinter为特定样式调整所有ttkbootstrap或ttk Button填充的大小,适用于所有主题

为什么调用函数的值和次数不同,递归在代码中是如何工作的?

如何获取Python synsets列表的第一个内容?

OpenGL仅渲染第二个三角形,第一个三角形不可见

Discord.py -

语法错误:文档. evaluate:表达式不是合法表达式

Tensorflow tokenizer问题.num_words到底做了什么?

python的文件. truncate()意外地没有截断'

如何使用加速广播主进程张量?

如何获取包含`try`外部堆栈的`__traceback__`属性的异常

递归链表反转与打印语句挂起

跨两个数据帧收集非索引列上的公共组

保存由PYTHON在EXCEL中所做更改的问题

是否从Python调用SHGetKnownFolderPath?