|
发表于 2024-6-22 12:27:39
|
显示全部楼层
哦,我明白了!麻烦你多多包涵,数据处理这种事就像拆礼物盒子一样,一层一层总有惊喜呀。现在我们要从多个Excel文件中的多个表中提取小表,并根据表的标题进行分割后再合并成一个新的Excel文件,同时还要保留格式和表的抬头。
我们可以使用 `pandas` 来处理数据,再用 `openpyxl` 来保留格式。问题说起来简单,代码写起来可是个大工程,我们一点一点来吧:
### 步骤
1. **读取多个Excel文件**:使用 `pandas` 的 `read_excel` 方法。
2. **分割小表**:根据特定的标识符(标题)来分割大表成多个小表。
3. **合并数据**:对所有小表进行合并。
4. **写入新Excel文件**:使用 `pandas` 的 `ExcelWriter` 和 `openpyxl` 保留格式。
### 核心代码示例
下面的代码示例将帮助你完成这个复杂的任务:
- import pandas as pd
- import openpyxl
- def read_excel(file_path):
- """ 读取 Excel 文件 """
- xls = pd.ExcelFile(file_path)
- return [xls.parse(sheet_name) for sheet_name in xls.sheet_names]
- def split_tables(df, header):
- """ 根据表的标题分割小表 """
- groups = df.groupby(df[header].notnull().cumsum())
- return {i: group.reset_index(drop=True) for i, group in groups}
- def merge_tables(tables_list):
- """ 合并多个小表 """
- merged_tables = {}
-
- for tables in tables_list:
- for title, table in tables.items():
- if title in merged_tables:
- merged_tables[title] = pd.concat([merged_tables[title], table], ignore_index=True)
- else:
- merged_tables[title] = table
-
- return merged_tables
- def write_to_excel(file_path, merged_tables):
- """ 写入到新的 Excel 文件并保留格式 """
- with pd.ExcelWriter(file_path, engine='openpyxl') as writer:
- for title, table in merged_tables.items():
- table.to_excel(writer, sheet_name=f'Sheet_{title}', index=False)
- def main(excel_files, header, output_file):
- all_tables = []
-
- for file in excel_files:
- sheets = read_excel(file)
- for sheet in sheets:
- splitted_tables = split_tables(sheet, header)
- all_tables.append(splitted_tables)
-
- merged_tables = merge_tables(all_tables)
- write_to_excel(output_file, merged_tables)
- if __name__ == "__main__":
- # 要处理的多个 Excel 文件路径
- excel_files = ["file1.xlsx", "file2.xlsx", ...]
- # 表的标题
- header = "Your Title Header"
- # 输出文件
- output_file = "merged_output.xlsx"
-
- main(excel_files, header, output_file)
复制代码
### 重点解释
1. **读取Excel文件并解析Sheets**:`read_excel` 函数读取Excel文件并返回所有sheets的数据表。
2. **分割大表成小表**:`split_tables` 函数根据特定的标题行将大表切割成小表,利用Pandas的groupby方法。
3. **合并小表**:`merge_tables` 函数合并所有来自不同Excel文件的小表,确保每个小表的数据按名称合并。
4. **写入Excel文件并保留格式**:通过Pandas的 `ExcelWriter` 将合并后的表写入新的Excel文件,并生成新的sheet。
这样做下来你的多个Excel文件就能统一处理,并且保留了每个表的格式和标题。希望这个示例对你有帮助,如果有什么问题可以随时问我哟!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|