我有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 按名称获取工作表
感谢所有帮助。
活动工作表是保存工作簿时使用的可查看工作表,可以通过以下方式访问
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'