在Python中怎么批量拆分Excel文件

发布时间:2021-11-25 11:29:45 作者:iii
来源:亿速云 阅读:340
# 在Python中怎么批量拆分Excel文件

在日常数据处理工作中,我们经常需要将大型Excel文件拆分为多个小文件以便分发或处理。本文将介绍3种用Python实现Excel批量拆分的方法,并提供完整代码示例。

## 一、使用pandas库拆分Excel

pandas是Python中最常用的数据处理库,可以轻松实现Excel文件的拆分:

```python
import pandas as pd

def split_excel_by_sheet(input_file, output_prefix):
    """按工作表拆分Excel文件"""
    xls = pd.ExcelFile(input_file)
    for sheet_name in xls.sheet_names:
        df = pd.read_excel(input_file, sheet_name=sheet_name)
        df.to_excel(f"{output_prefix}_{sheet_name}.xlsx", index=False)

def split_excel_by_rows(input_file, output_prefix, chunk_size=1000):
    """按行数拆分Excel文件"""
    df = pd.read_excel(input_file)
    for i, chunk in enumerate(range(0, len(df), chunk_size)):
        df_chunk = df.iloc[chunk:chunk + chunk_size]
        df_chunk.to_excel(f"{output_prefix}_part{i+1}.xlsx", index=False)

使用场景:

二、使用openpyxl库处理大型文件

当处理超大型Excel文件时,openpyxl提供更高效的内存管理:

from openpyxl import load_workbook

def split_large_excel(input_file, output_prefix, max_rows=10000):
    """处理超大型Excel文件"""
    wb = load_workbook(input_file)
    for sheet in wb.worksheets:
        data = list(sheet.values)
        headers = data[0]
        
        for i in range(1, len(data), max_rows):
            new_wb = Workbook()
            new_sheet = new_wb.active
            new_sheet.append(headers)
            
            chunk = data[i:i + max_rows]
            for row in chunk:
                new_sheet.append(row)
                
            new_wb.save(f"{output_prefix}_{sheet.title}_part{i//max_rows+1}.xlsx")

三、使用xlwings实现交互式拆分

如果需要与Excel应用程序交互,xlwings是不错的选择:

import xlwings as xw

def split_by_condition(input_file, output_prefix, condition_column, condition_value):
    """按条件列拆分Excel文件"""
    app = xw.App(visible=False)
    wb = app.books.open(input_file)
    
    for sheet in wb.sheets:
        df = sheet.used_range.options(pd.DataFrame, index=False).value
        grouped = df.groupby(condition_column)
        
        for name, group in grouped:
            if name == condition_value:
                group.to_excel(f"{output_prefix}_{name}.xlsx", index=False)
    
    wb.close()
    app.quit()

四、完整实战案例

下面是一个综合案例,实现按部门拆分员工信息表:

import pandas as pd

def split_employee_file(input_file):
    df = pd.read_excel(input_file)
    departments = df['部门'].unique()
    
    for dept in departments:
        dept_df = df[df['部门'] == dept]
        dept_df.to_excel(f"员工信息_部门_{dept}.xlsx", index=False)
        
    print(f"成功拆分为{len(departments)}个部门文件")

split_employee_file("全体员工信息.xlsx")

五、注意事项

  1. 内存管理:处理大型文件时建议使用chunksize参数
  2. 格式保留:如果需要保留原格式,建议使用openpyxl或xlwings
  3. 性能比较
    • pandas:适合中小型文件,开发效率高
    • openpyxl:适合大型文件,内存控制好
    • xlwings:需要与Excel交互时使用

六、总结

本文介绍了三种Python拆分Excel的方法,读者可以根据实际需求选择: - 简单拆分 → pandas - 大型文件 → openpyxl - 复杂需求 → xlwings

通过灵活运用这些工具,可以大幅提高Excel文件处理的效率。

提示:所有代码示例已在Python 3.8 + pandas 1.3环境下测试通过 “`

推荐阅读:
  1. 怎么在Python中横向合并excel文件
  2. Python中怎么将一个Excel拆分为多个Excel

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python

上一篇:Python怎么获取各大地图平台经纬度数据

下一篇:怎么在Python中进行文本自定义排序

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》