Python - Excel拆分详解(按工作表、行、列、内容拆分)

目录

引言

安装Python Excel库

Python按工作表拆分Excel

Python按行拆分Excel

Python按列拆分Excel

Python按内容拆分Excel


引言

拆分Excel文件是一种将大型工作簿分割为更小、更易管理的部分的有效方法。当面对包含大量数据或复杂信息的工作簿时,拆分文件可以简化数据管理、提高数据处理和分析的效率。在Excel中,有几种方法可以拆分文件:

  • 按工作表拆分
  • 按行拆分
  • 按列拆分
  • 按内容拆分

接下来,我们将探讨如何使用Python实现以上4种Excel文件拆分方式。

安装Python Excel库

要在Python中实现拆分Excel文件,首先需要安装Excel库。本文所使用的库是Spire.XLS for Python,它可以通过以下pip命令进行安装:

pip install Spire.XLS

Python按工作表拆分Excel

Excel文件通常包含多个工作表,每个工作表代表不同的数据集或主题。你可以根据工作表将文件拆分成多个单独的文件,使每个文件只包含一个工作表。

以下代码将一个Excel文件按照工作表进行拆分:

from spire.xls import Workbook, FileFormat

# 定义一个 extract_worksheets 函数,用于从一个 Excel 文件中提取每个工作表到一个新的 Excel 文件
def extract_worksheets(workbook, output_folder):
    # 遍历文件中的工作表
    for worksheet in workbook.Worksheets:
        # 创建一个新的 Workbook 对象
        new_workbook = Workbook()
        # 清空新工作簿中的默认工作表
        new_workbook.Worksheets.Clear()

        # 将工作表从原始 Excel 文件复制到新的工作簿中
        new_workbook.Worksheets.AddCopy(worksheet)

        output_file_path = output_folder + worksheet.Name + ".xlsx"
        # 将新的工作簿保存为 xlsx 文件
        new_workbook.SaveToFile(output_file_path, FileFormat.Version2016)

# 指定输入的 Excel 文件路径和输出文件夹
input_file_path = "部门.xlsx"
output_folder = "Output/"
# 创建一个 Workbook 对象
workbook = Workbook()
# 加载 Excel 文件
workbook.LoadFromFile(input_file_path)

# 调用 extract_worksheet 函数,将 Excel 文件中的每个工作表提取到新的文件中
extract_worksheets(workbook, output_folder)

workbook.Dispose()

Python按行拆分Excel

按行拆分是最常见的拆分Excel文件的方法之一。你可以选择按照特定的行数将一个Excel工作表拆分成多个部分。例如,将一个包含1000行的Excel工作表按照每个文件200行的规模拆分,生成5个较小的文件。

以下代码将一个Excel工作表按照特定行数进行拆分:

from spire.xls import Workbook, FileFormat

# 定义一个 extract_rows() 函数,用于从 Excel 工作表中提取特定行到新的 Excel 文件中
def extract_rows(worksheet, start_row, end_row, output_file_path):
    # 创建一个新的工作簿用于提取的行
    new_workbook = Workbook()
    # 清除新工作簿中的默认工作表
    new_workbook.Worksheets.Clear()
    # 在新工作簿中添加一个新的工作表
    new_worksheet = new_workbook.Worksheets.Add("Sheet1")
    
    if start_row == 1: 
        # 将源工作表中的特定行复制到新工作表中
        worksheet.Range[start_row, 1, end_row, len(worksheet.Columns)].Copy(new_worksheet.Range[1, 1])
    else:
        # 将源工作表的标题行复制到新工作表中
        worksheet.Range[1, 1, 1, len(worksheet.Columns)].Copy(new_worksheet.Range[1, 1])
        # 将源工作表中的特定行复制到新工作表中
        worksheet.Range[start_row, 1, end_row, len(worksheet.Columns)].Copy(new_worksheet.Range[2, 1])
    
    # 将新工作簿保存为 xlsx 文件
    new_workbook.SaveToFile(output_file_path, FileFormat.Version2016)
    new_workbook.Dispose()

# 指定输入和输出文件路径
input_file_path = "通讯录.xlsx"
output_file_path1 = "Output/1-6行.xlsx"
output_file_path2 = "Output/剩余行.xlsx"

# 加载一个 Excel 文件
workbook = Workbook()
workbook.LoadFromFile(input_file_path)
# 获取第一个工作表
worksheet = workbook.Worksheets[0]

# 调用 extract_rows() 函数,将第一个工作表中的1-6 行提取到一个新的 Excel 文件中
extract_rows(worksheet, 1, 6, output_file_path1)
# 调用 extract_rows() 函数,将第一个工作表中的剩余行提取到一个新的 Excel 文件中
extract_rows(worksheet, 7, len(worksheet.Rows), output_file_path2)

workbook.Dispose()

Python按列拆分Excel

与按行拆分相似,按列拆分也是另一种常见的拆分Excel文件的方法。你可以将一个包含多列的Excel工作表拆分为多个单独的文件,每个文件包含特定数量的列。

以下代码将一个Excel工作表按照特定列数进行拆分:

from spire.xls import Workbook, FileFormat

# 定义一个 extract_columns() 函数,用于从 Excel 工作表中提取特定列到新的 Excel 文件中
def extract_columns(worksheet, start_col, end_col, output_file_path):
    # 创建一个新的工作簿用于提取的列
    new_workbook = Workbook()
    # 清除新工作簿中的默认工作表
    new_workbook.Worksheets.Clear()
    # 在新工作簿中添加一个新的工作表
    new_worksheet = new_workbook.Worksheets.Add("Sheet1")

    # 将源工作表中的特定列复制到新工作表中
    worksheet.Range[1, start_col, len(worksheet.Rows), end_col].Copy(new_worksheet.Range[1, 1])    

    # 将新工作簿保存为 xlsx 文件
    new_workbook.SaveToFile(output_file_path, FileFormat.Version2016)
    new_workbook.Dispose()

# 指定输入和输出文件路径
input_file_path = "通讯录.xlsx"
output_file_path1 = "Output/1-3列.xlsx"
output_file_path2 = "Output/剩余列.xlsx"

# 创建一个 Workbook 对象
workbook = Workbook()
# 加载一个 Excel 文件
workbook.LoadFromFile(input_file_path)
# 获取第一个工作表
worksheet = workbook.Worksheets[0]

# 调用 extract_columns() 函数,将第一个工作表中的1-3 列提取到一个新的 Excel 文件中
extract_columns(worksheet, 1, 3, output_file_path1)
# 调用 extract_columns() 函数,将第一个工作表中的剩余列提取到一个新的 Excel 文件中
extract_columns(worksheet, 4, len(worksheet.Columns), output_file_path2)

workbook.Dispose()

Python按内容拆分Excel

如果一个Excel文件按照某种特定的内容进行分类,可以根据这些内容将文件拆分。举个例子,假如你有一个销售数据表,可以按照产品类别或地区将表格拆分成多个子文件,以便更方便地分析每个产品类别或地区的数据。

以下代码将一个Excel工作表按照特定数据进行拆分:

from spire.xls import Workbook, FileFormat, FindType, ExcelFindOptions

# 定义一个 extract_rows_by_value() 函数,用于根据特定值从 Excel 工作表中提取行到新的 Excel 文件中
def extract_rows_by_value(worksheet, value, output_file_path):
    # 创建一个新的工作簿用于提取的行
    new_workbook = Workbook()
    # 清除新工作簿中的默认工作表
    new_workbook.Worksheets.Clear()
    # 在新工作簿中添加一个新的工作表
    new_worksheet = new_workbook.Worksheets.Add("Sheet1")
    
    # 将源工作表中的标题行复制到新工作表中
    worksheet.Range[1, 1, 1, len(worksheet.Columns)].Copy(new_worksheet.Range[1, 1])

    # 查找包含特定字符串值的单元格
    ranges = worksheet.FindAll(value, FindType.Text, ExcelFindOptions.MatchEntireCellContent)
    
    i = 2
    # 遍历找到的单元格
    for range in ranges:
        # 获取包含单元格的行
        row = range.Row
        # 将行复制到新工作表中
        worksheet.Range[row, 1, row, len(worksheet.Columns)].Copy(new_worksheet.Range[i, 1])
        i += 1

    # 将新工作簿保存为新文件
    new_workbook.SaveToFile(output_file_path, FileFormat.Version2016)
    new_workbook.Dispose()

# 指定输入和输出文件路径
input_file_path = "销售数据.xlsx"
output_file_path1 = "Output/零部件.xlsx"
output_file_path2 = "Output/服装.xlsx"

# 创建一个 Workbook 对象
workbook = Workbook()
# 加载一个 Excel 文件
workbook.LoadFromFile(input_file_path)
# 获取第一个工作表
worksheet = workbook.Worksheets[0]

# 调用 extract_rows_by_value() 函数,将包含特定字符串值 "零部件" 的行提取到一个新的 Excel 文件中
extract_rows_by_value(worksheet, "零部件", output_file_path1)
# 调用 extract_rows_by_value() 函数,将包含特定字符串值 "服装" 的行提取到一个新的 Excel 文件中
extract_rows_by_value(worksheet, "服装", output_file_path2)
workbook.Dispose()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/602346.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】25. 网络基础(一)

网络基础(一) 计算机网络背景 网络发展 独立模式: 计算机之间相互独立; 网络互联: 多台计算机连接在一起, 完成数据共享; 其实本质上一台计算机内部也是一个小型网络结构(如果我们将计算机内部某个硬件不存放在电脑中,而是拉根长长的线进行连接。这其实也就是网…

存储大作战:探索Local Storage与Session Storage的奥秘

欢迎来到我的博客,代码的世界里,每一行都是一个故事 存储大作战:探索Local Storage与Session Storage的奥秘 前言Local Storage与Session Storage简介数据存储生命周期容量限制安全性 前言 在Web的世界里,数据就像是一群流浪者&a…

C++ 递归函数

一 递归函数 递归函数(Recursive Function)即自调用函数,即在函数体内有直接或间接地自己调用自己的语句。 大多数递归函数都能够用非递归函数代替。 例如:求两个整数a,b的最大公约数。 算法描述: 大多数递归函数都能用非递归…

武汉星起航:亚马逊年终促销新策略——强化营销,优化体验赢未来

年终节日是电商平台的黄金销售期,也是各大电商平台竞相展示自身实力与智慧的重要舞台。作为全球电商巨头的亚马逊,自然也不例外。每年的年终节日,亚马逊都会推出一系列精彩纷呈的促销活动,吸引全球消费者的目光,实现销…

Vue 中 $nextTick 的作用是什么?

目录 一、NextTick是什么 为什么要有nexttick 二、使用场景 三、实现原理 一、NextTick是什么 官方对其的定义 在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM 什么意思呢? 我们可以理解成&#xff0c…

web安全day03

MYSQL注入: SQL 注入的原理、危害及防御措施 SQL 注入的原理:原本的 SQL 语句在与用户可控的参数经过了如拼接、替换等字符串操作后,得到一个新的 SQL 语句并被数据库解析执行,从而达到非预期的效果。 SQL 注入的危害&#xff…

OpenAI泄密者加入马斯克xAI,技术版图扩张;OpenAI推出可识别DALL·E 3图像的AI检测工具

🦉 AI新闻 🚀 OpenAI泄密者加入马斯克xAI,技术版图扩张 摘要:最近,曾在OpenAI任职并被指控泄露机密的Pavel Izmailov迅速加入了马斯克旗下的xAI团队,成为研究员。在加入之前,Izmailov因涉嫌泄…

crossover不能生成容器 无法创建容器怎么办

CrossOver不能生成容器,我们应该先了解什么是容器,容器是盛放类虚拟机——CrossOver在macOS系统和Linux系统下载的win版软件的器皿。无法创建容器怎么办?无法创建多数情况是macOS系统与CrossOver不兼容所造成的。 首先,我们将介绍…

修图新风尚:AI技术赋能,Remini引领修图新纪元,从Remini到未来,AI修图如何改变我们的视觉世界?

最近一款名为Remini的AI修图软件凭借其独特的“丑萌”的黏土风格,迅速在海内外市场走红。 用户只需要上传一张照片,就可以利用AI技术生成对应的黏土滤镜风格的图像。 “黏土AI”风格的图像刷爆了今年的五一假期旅游照片“大赛”,在小红书、…

AI无人自动实景直播系统,挑战高效 实时 智能 全新的直播方式

随着科技的不断发展,人工智能(AI)已经涉足并改变了各个行业,直播领域也不例外。传统的直播方式依赖于真人主持和人工操作,而现在,AI无人自动实景直播系统的出现,正在挑战着传统直播的方式&#…

苹果iPad M4:Console级别图形和AI强大功能

苹果iPad M4:Console级别图形和AI强大功能 Apple近日发布了最新的M4芯片,旨在为iPad Pro系列带来明显的性能提升和电池续航时间延长。在本篇报道中,我们将详细介绍M4芯片的特点、性能改进和为创意专业人士带来的影响。 M4芯片的强大功能 …

【XR806开发板试用】SPI驱动数码管显示

准备工作 安装repo 创建repo安装目录。 mkdir ~/bin下载repo wget https://storage.googleapis.com/git-repo-downloads/repo -P ~/bin/改变执行权限 chmod ax ~/bin/repo设置环境变量,在~/.bashrc文件的最后输入 export PATH~/bin:$PATH和export REPO_URLhttps://…

STM32平衡车-MPU6050的DMP库移植

本文目录 一、硬件接线二、需要移植的三个文件夹1. DMP文件夹目录2. IIC文件夹目录3. MPU6050文件夹目录 三、文件内容IO12C.cIO12C.hMPU6050.cMPU6050.hmain.c 四、附录1.更改IIC引脚 一、硬件接线 SCL-- PA11 SDA-- PA12 VCC-- 3.3v GND-- GND 二、需要移植的三个文件夹 1.…

java-串口通讯-连接硬件

串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很…

短视频矩阵系统源码saas开发--可视化剪辑、矩阵托管、多功能合一开发

短视频矩阵系统源码saas开发(可视化剪辑、矩阵托管、智能私信聚合、线索转化、数据看板、seo关键词、子账号等多个板块开发) 短视频矩阵系统是一种集成了多种功能的系统,旨在帮助用户在短视频平台上进行高效的内容创作、管理和发布。根据您提…

citylava:城市场景中VLMs的有效微调

citylava:城市场景中VLMs的有效微调 摘要IntroductionRelated WorkVision-Language ModelsVLMs in Driving Methodology CityLLaVA: Efficient Fine-Tuning for VLMs in City Scenario 摘要 在城市广阔且动态的场景中,交通安全描述与分析在从保险检查到事故预防的各…

Type C USB

参考内容地址 https://m.elecfans.com/article/2315364.html Type C是高速 USB3.0设备,不能有大电容在链路中。

【接地故障保护】剩余电流继电器及监控产品解决方案

安科瑞电气股份有限公司 祁洁 15000363176 一、产品型号 二、产品功能 1、对直接接触电击事故的防护 对直接接触电击事故的防护中,剩余电流继电器(RCD)只作为直接接触电击事故基本防护措施的补充保护措施(不包括对相与相、相…

微信小程序音频怎么保存到手机

如果你想在微信小程序中收听美妙的音乐,又想将其保存到手机中,那么微信小程序音频怎么保存到手机这个问题就是你的最佳指南。 微信小程序音频下载工具我已经打包好了,有需要的自己下载一下 下载高手工具打包链接:百度网盘 请输入…

【Git】Git在Gitee上的基本操作指南

文章目录 1. 查看 git 版本2. 从Gitee克隆仓库:3. 复制文件到工作目录:4. 将未跟踪的文件添加到暂存区:5. 在本地提交更改:6. 将更改推送到远程仓库(Gitee):7. Windows特定提示: 1. …