用python面向对象的方法来写,读取输入路径下所有的excel文件,读取excel中sheet_name=”功能点拆分表“中的内容,将”功能点拆分表“这个工作簿中的所有内容整合到一个新的excel文件中并保留原来单元格中的颜色,按列向上合并为空的单元格
时间: 2024-03-26 17:36:21 浏览: 94
好的,我来帮你回答这个问题。
首先,我们需要使用Python中的openpyxl库来读取和写入Excel文件。其次,我们需要定义一个类来实现这个功能。
下面是一个可能的实现:
```python
from openpyxl import load_workbook, Workbook
from openpyxl.styles import PatternFill
class ExcelMerger:
def __init__(self, input_path, output_path):
self.input_path = input_path
self.output_path = output_path
self.workbook = Workbook()
self.sheet = self.workbook.active
self.fill = PatternFill(fill_type='solid', start_color='FFFFFF', end_color='FFFFFF')
self.row_index = 1
def merge(self):
for filename in os.listdir(self.input_path):
if not filename.endswith('.xlsx'):
continue
filepath = os.path.join(self.input_path, filename)
workbook = load_workbook(filepath, data_only=True)
if '功能点拆分表' not in workbook.sheetnames:
continue
sheet = workbook['功能点拆分表']
for row in sheet.rows:
self.sheet.row_dimensions[self.row_index].height = sheet.row_dimensions[row[0].row].height
for cell in row:
if cell.value is not None:
self.sheet.cell(row=self.row_index, column=cell.column, value=cell.value)
self.sheet.cell(row=self.row_index, column=cell.column).fill = cell.fill
else:
self.sheet.cell(row=self.row_index, column=cell.column).fill = self.fill
self.row_index += 1
self.workbook.save(self.output_path)
```
这个类的初始化方法接受两个参数:输入路径和输出路径。在初始化方法中,我们创建了一个新的Excel文件,并且获取了默认的工作表。我们还定义了一个初始的行索引,用于将所有的行合并到一个新的工作表中。
`merge`方法是主要的方法,它遍历输入路径下的所有Excel文件,并且读取每个文件中的“功能点拆分表”工作表。然后,它将该工作表中的所有行合并到新的工作表中,并且保留了原始单元格中的颜色。如果单元格为空,则将其填充为白色。
最后,我们将新的工作簿保存到输出路径中。
使用这个类,你可以这样调用:
```python
merger = ExcelMerger(input_path='input', output_path='output.xlsx')
merger.merge()
```
其中,`input`是包含所有Excel文件的文件夹,`output.xlsx`是合并后的Excel文件的文件名。
阅读全文