使用读取文件夹下所有excel文件中sheet_name=“功能点拆分表”的工作簿,需要识别单元格的颜色为黄色或红色的单元格,并提取单元格的信息,其他为空的单元格向上合并单元格,合并列表生成EXCEL后导出,给出面向对象代码
时间: 2024-03-26 08:36:13 浏览: 72
遍历指定文件夹下的XML,读取每个XML数据,生成到EXCEL导出,美化Excel单元格格式,合并单元格
好的,可以使用Python中的pandas和openpyxl库来实现这个功能。下面是一个面向对象的示例代码:
```python
import os
import pandas as pd
from openpyxl.styles import Color, PatternFill
from openpyxl import load_workbook
class ExcelExtractor:
def __init__(self, folder_path):
self.folder_path = folder_path
self.sheet_name = "功能点拆分表"
self.yellow_fill = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")
self.red_fill = PatternFill(start_color="FF0000", end_color="FF0000", fill_type="solid")
def extract_data(self):
# 遍历文件夹下所有excel文件
for file in os.listdir(self.folder_path):
if file.endswith(".xlsx"):
file_path = os.path.join(self.folder_path, file)
# 加载工作簿和工作表
workbook = load_workbook(file_path)
sheet = workbook[self.sheet_name]
# 提取单元格信息
data = []
for row in sheet.rows:
row_data = []
for cell in row:
if cell.fill == self.yellow_fill or cell.fill == self.red_fill:
row_data.append(cell.value)
elif cell.value is None and cell.coordinate != "A1":
# 向上合并单元格
for merged_cell_range in sheet.merged_cells.ranges:
if cell.coordinate in merged_cell_range:
row_data.append(sheet.cell(merged_cell_range.min_row, merged_cell_range.min_col).value)
break
else:
row_data.append(cell.value)
data.append(row_data)
# 生成新的工作簿
output_path = os.path.join(self.folder_path, f"{os.path.splitext(file)[0]}_output.xlsx")
pd.DataFrame(data).to_excel(output_path, index=False, header=False)
# 示例用法
extractor = ExcelExtractor("your_folder_path")
extractor.extract_data()
```
这个类的`extract_data`方法可以实现读取文件夹下所有excel文件中指定工作表的功能点拆分表,提取单元格信息,向上合并单元格,并生成新的工作簿。
其中,`self.yellow_fill`和`self.red_fill`是用来识别黄色和红色单元格的填充颜色,可以根据需要进行修改。在提取单元格信息时,如果遇到空单元格,就向上查找合并单元格,找到第一个非空单元格并提取其值。最后,使用pandas库将提取到的数据生成新的工作簿,并保存到原文件夹下。
阅读全文