使用读取文件夹下所有excel文件中sheet_name=“功能点拆分表”的工作簿,需要识别”子过程描述“列下的颜色为黄色或红色的单元格,并提取单元格的信息,列为空的单元格向上合并单元格,合并列表生成EXCEL后导出,给出面向对象代码
时间: 2024-03-26 07:36:15 浏览: 158
遍历指定文件夹下的XML,读取每个XML数据,生成到EXCEL导出,美化Excel单元格格式,合并单元格
好的,根据您的要求,我可以给您提供以下的 Python 代码实现:
```python
import os
import pandas as pd
from openpyxl import load_workbook
from openpyxl.styles import PatternFill
# 读取文件夹下所有excel文件
folder_path = "your_folder_path"
excel_files = os.listdir(folder_path)
excel_files = [f for f in excel_files if f.endswith('.xlsx')]
# 定义颜色
yellow_fill = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")
red_fill = PatternFill(start_color="FF0000", end_color="FF0000", fill_type="solid")
# 遍历所有excel文件
result_df = pd.DataFrame()
for file in excel_files:
file_path = os.path.join(folder_path, file)
wb = load_workbook(file_path, data_only=True)
sheet_names = wb.sheetnames
# 遍历所有sheet
for sheet_name in sheet_names:
if sheet_name == "功能点拆分表":
ws = wb[sheet_name]
data = ws.values
columns = next(data)[1:]
df = pd.DataFrame(data, columns=columns)
# 遍历子过程描述列下的单元格
for index, cell in df["子过程描述"].items():
if isinstance(cell, str):
color = ws.cell(row=index+2, column=6).fill
if color == yellow_fill or color == red_fill:
value = cell.strip()
if not value:
merged_cell = ws.cell(row=index+2, column=6).coordinate
for merged in ws.merged_cells.ranges:
if merged_cell in merged:
value = ws.cell(row=merged.min_row, column=6).value.strip()
break
result_df = result_df.append({"文件名": file, "Sheet名": sheet_name, "子过程描述": value}, ignore_index=True)
# 生成excel文件
with pd.ExcelWriter("result.xlsx") as writer:
result_df.to_excel(writer, index=False)
```
以上代码会读取您指定的文件夹下所有的 Excel 文件,找到所有 Sheet 名称为“功能点拆分表”的 Sheet,然后遍历“子过程描述”列下的单元格,如果单元格的背景颜色是黄色或红色,则提取单元格信息,并将其存储在结果 DataFrame 中。如果单元格为空,则向上合并单元格,并提取合并后的单元格的值。最后,将结果 DataFrame 写入到名为“result.xlsx”的 Excel 文件中。
希望这段代码能够帮助到您!
阅读全文