利用openpyxl 把一个sheet表拆分成多个excel文件

        本章介绍openpyxl 的应用——把一个sheet表拆分成多个excel文件。用openpyxl比较麻烦,建议用pandas,用openpyxl来练习是没有问题的。和上一篇一样,同一把数据先转为字典,然后根据键值对分别创建不同班级的文件。

import openpyxl

file = openpyxl.load_workbook(r"D:\临时\python试验\openpyxl\把sheet拆分成多个文件.xlsx")
sheet = file['Sheet1']

d = {}
for row in sheet.iter_rows(2,sheet.max_row,1,sheet.max_column,values_only=True):
    row_ls = list(row)
    jian = row_ls[0]
    zhi = row_ls[1:]
    d[jian] = d.get(jian,[]) + [zhi]
    
for key,value in d.items():
    f = openpyxl.Workbook()
    st = f.active        # 获取活跃工作表,即创建f工作簿时默认产生的Sheet表
    for n_row in value:
        st.append(n_row)
    road = f'D:\临时\python试验\openpyxl\ls存放\{key}.xlsx'
    f.save(road)         # 保存
    f.close()            # 关闭f,释放内存

        和前几篇相比,只是操作改变一点点,思路不一样而已,没有过多的难点,唯一难点就是 d[jian] = d.get(jian,[]) + [zhi] 这行代码,如果你理解到了,那么你对python是非常熟练了。

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

### 如何将Excel中的每个工作拆分并导出为单独的工作簿文件 可以借助Python编程语言及其强大的第三方库`pandas`和`openpyxl`实现这一需求。以下是具体方法以及代码示例: #### 方法概述 为了完此操作,可以选择使用Python脚本自动化处理Excel文件。通过读取原始Excel文件中的所有工作,并逐一将其写入新的独立Excel文件中,从而达到拆分的目的。 以下是一个基于`pandas`和`openpyxl`的解决方案[^2]: ```python import pandas as pd def split_excel_sheets_to_files(input_file): # 加载Excel文件 excel_file = pd.ExcelFile(input_file) # 遍历每一个工作名称 for sheet_name in excel_file.sheet_names: # 将当前工作的数据加载到DataFrame中 df = excel_file.parse(sheet_name) # 创建一个新的ExcelWriter对象用于保存数据 output_file = f"{sheet_name}.xlsx" with pd.ExcelWriter(output_file, engine='openpyxl') as writer: # 将DataFrame写入新文件一个工作中 df.to_excel(writer, index=False, sheet_name=sheet_name) print("拆分") # 调用函数传入输入文件路径 split_excel_sheets_to_files('example.xlsx') ``` 上述代码会遍历指定Excel文件内的所有工作,并将它们逐个保存独立的`.xlsx`文件。每张工作会被命名为其原名加上扩展名“.xlsx”。 如果需要保留源工作的所有样式,则可考虑采用`openpyxl`库手动调整方式[^3]。这种方式虽然复杂度稍高,但能更好地保持原有格式不变。 另外,在VBA环境下也可以轻松达相同目标[^4]。不过对于不熟悉VBA语法或者希望跨平台使用的场景来说,推荐优先尝试Python方案。 最后提醒一点,当遇到含有额外辅助格(如案例提到的“备注”)的情况时,可能还需要进一步增强逻辑判断以便正确复制相关内容至各子文档里去[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值