利用openpyxl把多个sheet表合并成一个sheet表

本文介绍了如何利用Python的openpyxl库将多个工作表合并到一个新的工作表中。首先加载xlsx文件,获取所有sheet,然后创建新的sheet添加表头,遍历每个sheet的数据并写入新表,最后保存合并后的文件。文章鼓励读者尝试更多openpyxl的功能,如删除多余sheet、创建新文件或冻结行列。
摘要由CSDN通过智能技术生成

        本章介绍openpyxl 的应用——把多个sheet表合并成一个sheet表。这里我们有一个各班成绩的随机生成的假数据,目的是把这5个sheet表合并成一个。

        直接上代码:

import openpyxl
file = openpyxl.load_workbook(r"D:\临时\python试验\openpyxl\把多个sheet表合并成一个sheet表.xlsx")
sheets = file.worksheets       # 获取文件中的所有sheet表

new_sheet = file.create_sheet('各班合并后')       # 在文件中新建一个表,用于存放合并后的数据
new_sheet.append(['班级','姓名','语文','数学','英语','综合科'])      # 先把表头加上

for sheet in sheets:
    for row in sheet.iter_rows(2,sheet.max_row,1,sheet.max_column): # 从第二行开始,不包括表头
        row_list = [i.value for i in row]
        new_sheet.append(row_list)

file.save(r"D:\临时\python试验\openpyxl\各班合并后.xlsx")

        要自己理解每一步的意思,不然表格变动一下就不知道怎么做了。

        第3行代码的顺序很重要,要先获取了文件的所有表,再创建新表。如果先创建了新表再获取所有表,那么后期写入时就会又再读取一遍新表,写入新表,这样就会导致数据重复。

        因为每一个表格都有表头,所以我们从第二行开始遍历。但是这样新表就没有表头了,所以先在新表中写入表头,然后再读取每班的表去写入数据。

        运行结果如下:

        你也可以灵活运用openpyxl,如合并完后把各班的表删除,只留下合并表 ;创建一个新文件,把合并表写入一个新excel文件里;把合并后的表的B1单元格冻结等,只要有想法,都可以进行尝试,尝试多了,自然就熟练并能灵活运用了。

        本文excel文件:链接:https://pan.baidu.com/s/1KVxFe3qNTYdu8GxT_CUHVg?pwd=f5zx 
提取码:f5zx

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 `pandas` 库来合并两个 Excel 文件,并保留样式。具体步骤如下: 1. 导入 `pandas` 库和 `openpyxl` 库。 ```python import pandas as pd from openpyxl import load_workbook ``` 2. 读取两个 Excel 文件,并将每个文件的每个 sheet 格读取为一个 `pandas` 的 `DataFrame` 对象。 ```python file1 = pd.ExcelFile('file1.xlsx') file2 = pd.ExcelFile('file2.xlsx') df1 = file1.parse(file1.sheet_names[0]) # 读取第一个文件的第一个 sheet 格 df2 = file2.parse(file2.sheet_names[0]) # 读取第二个文件的第一个 sheet 格 ``` 3. 创建一个新的 Excel 文件,并将两个 `DataFrame` 对象写入该文件中的两个 sheet 格中。 ```python writer = pd.ExcelWriter('merged_file.xlsx', engine='openpyxl') # 将第一个 DataFrame 对象写入第一个 sheet 格中,并保留样式 book = load_workbook('merged_file.xlsx') writer.book = book df1.to_excel(writer, sheet_name='Sheet1', index=False) writer.sheets['Sheet1'] = book['Sheet1'] # 将第二个 DataFrame 对象写入第二个 sheet 格中,并保留样式 df2.to_excel(writer, sheet_name='Sheet2', index=False) writer.sheets['Sheet2'] = book['Sheet2'] writer.save() ``` 完整代码如下: ```python import pandas as pd from openpyxl import load_workbook file1 = pd.ExcelFile('file1.xlsx') file2 = pd.ExcelFile('file2.xlsx') df1 = file1.parse(file1.sheet_names[0]) df2 = file2.parse(file2.sheet_names[0]) writer = pd.ExcelWriter('merged_file.xlsx', engine='openpyxl') book = load_workbook('merged_file.xlsx') writer.book = book df1.to_excel(writer, sheet_name='Sheet1', index=False) writer.sheets['Sheet1'] = book['Sheet1'] df2.to_excel(writer, sheet_name='Sheet2', index=False) writer.sheets['Sheet2'] = book['Sheet2'] writer.save() ``` 注意:上述代码中,`file1.xlsx` 和 `file2.xlsx` 是要合并的两个 Excel 文件,`merged_file.xlsx` 是合并后生的新文件。如果要合并更多的 Excel 文件,只需要将读取和写入的步骤扩展即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值