前言
记录一下,在使用
pandas
处理excel表格
表格时候,关于分割(切分)表格这一块儿的操作。
这个系列会有三篇左右文章,这是第二篇,excel表格
合并
我们常说的 excel文件
,
- 在广义上,是指以
xls
或xlsx
为后缀的文件。(xls
和xlsx
分别为新旧版本的excel
生成的文件格式 - 在狭义上,是指Microsoft公司编写的一款电子表格软件。
不论如何,这些知识知道了总不会有坏处。
关于excel
的合并这一块儿,像wps
软件,做的是非常优秀的,一键进行合并。
既然它已经这么优秀了,那为啥还写这篇文章呢?对啊!为什么呢?为什么你还会查阅这篇文章呢!!!
解决问题🐓🐓
在我看来,使用Python处理excel表格,至少在
合并
这一块儿,如果被合并的内容格式是不一致的,那是非常没必要的。因为格式花样层出不穷,不同格式还得不同处理,属于吃力不讨好的活儿。所以本文的合并
,只针对于格式一致的excel文件
。(换句话说就是我只跳了最简单的来介绍。
表格合并这一块儿,能做的有点多(组合起来是很多的),在这里只介绍
- 单个
excel文件
,多个sheet,合并多个sheet到一个sheet中并保存 - 多个
excel文件
,单个sheet,合并多个excek到一个excel文件
中并保存
安装模块
pip install openpyxl
pip install pandas
知识点📖📖
pandas
类型 | 链接 |
---|---|
文档 | 官方文档:https://pandas.pydata.org |
视频 | 视频总结:https://www.bilibili.com/video/BV1PZ4y1U7Y7 |
项目地址 | 项目地址:https://github.com/Frica01/BlogCode/tree/main/excel-operation |
代码
这里给出伪代码,可以运行。如需配套练习的
excel文件
,可从这里获取 excel-operation
多个sheet 合成一个sheet
def merge_multi_sheet_to_single_sheet(file_path):
"""
合并多个sheet到一个sheet中
Args:
file_path(str): 文件路径
Returns:None
"""
output_file_path = f'./output/{os.path.basename(file_path)}'
df = read_excel(file_path, sheet_name=None)
# 新建一个空的DataFrame
merge_df = DataFrame()
# 创建新文件
with ExcelWriter(path=output_file_path) as writer:
for sheet_name in list(df.keys()):
# 将sheet添加到merge_df去
merge_df = concat([merge_df, df[sheet_name]])
merge_df.to_excel(excel_writer=writer, sheet_name='merge', index=False, )
多个excel 合成一个excel
def merge_multi_excel_to_single_excel(files_path):
"""
合并多个excel到一个excel文件夹中
Args:
files_path(list|tuple|str): 文件夹路径
Returns: None
"""
# 处理文件导出路径
if not os.path.exists('./output'):
os.makedirs(name='./output')
# 如果传入的路径是字符串,则取当前文件夹的所有excel文件,+ 补全路径
if isinstance(files_path, str):
files_path = [os.path.join(os.path.abspath(files_path), _) for _ in os.listdir(files_path)]
else:
files_path = [os.path.abspath(_) for _ in files_path]
new_df = DataFrame()
for file_path in files_path:
df = read_excel(file_path, sheet_name=0)
# 合并文件
new_df = concat([new_df, df])
# 删除子文件
# os.remove(file)'./excel-file/multi_sheet.xlsx, '
# 保存文件
new_df.to_excel(excel_writer=f'./output/merge.xlsx', sheet_name='merge', index=False)
后话
本次分享到此结束,如有疑问请自行解决。
see you~🐱🏍🐱🏍