python访问多级目录节点文件夹中的所有excel文件,把sheetname="系数表"的内容进行转置,并添加文件名在合并内容的第一列相同内容的单元格,合并输出excel文件到上级目录,
时间: 2024-03-26 14:41:23 浏览: 156
好的,我理解了你的要求。你可以使用Python的os和openpyxl库来实现这个功能。具体步骤如下:
1. 遍历多级目录节点,找到所有的excel文件,并将它们的路径保存在一个列表中。
```python
import os
def find_excels(folder_path):
excel_files = []
for root, dirs, files in os.walk(folder_path):
for file in files:
if file.endswith(".xlsx"):
excel_files.append(os.path.join(root, file))
return excel_files
excel_files = find_excels("folder_path")
```
2. 循环遍历每个excel文件,并将sheetname为"系数表"的内容进行转置,并添加文件名在合并内容的第一列相同内容的单元格。
```python
import openpyxl
merged_data = {}
for file in excel_files:
wb = openpyxl.load_workbook(file)
ws = wb["系数表"]
for row in ws.iter_rows(min_row=2):
key = row[0].value
if key not in merged_data:
merged_data[key] = [file]
else:
merged_data[key].append(file)
data = [cell.value for cell in row[1:]]
data.reverse()
row[1:] = data
wb.save(file)
```
在上面的代码中,我们定义了一个字典merged_data来保存每个文件中的数据。我们循环遍历了每个excel文件中的"系数表"工作表中的每一行数据,并将第一列数据作为merged_data的key,将文件名保存在value中。然后我们将第二列及以后的数据进行了转置,并将结果直接写回到了原文件中。
3. 将merged_data中的数据合并到一个新的excel文件中,并输出到上级目录。
```python
merged_wb = openpyxl.Workbook()
merged_ws = merged_wb.active
for i, key in enumerate(merged_data.keys()):
merged_ws.cell(row=i+1, column=1, value=key)
for file in merged_data[key]:
wb = openpyxl.load_workbook(file)
ws = wb["系数表"]
data = []
for row in ws.iter_rows(min_row=2):
if row[0].value == key:
data.extend([cell.value for cell in row[1:]])
merged_ws.cell(row=i+1, column=merged_data[key].index(file)+2, value=data)
merged_wb.save("output.xlsx")
```
在上面的代码中,我们定义了一个新的工作簿merged_wb,并在其中创建了一个工作表merged_ws。我们循环遍历了merged_data中的每个key,并将其保存在新的工作表的第一列。然后我们循环遍历每个key对应的value(即文件名),并从每个文件的"系数表"工作表中找到与key相同的行,并将其数据保存在data列表中。最后,我们将data列表中的数据写入到新的工作表中,并将其保存到上级目录的output.xlsx文件中。
希望这个代码可以满足你的要求。
阅读全文