找回密码
 会员注册
查看: 43|回复: 0

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

[复制链接]

4

主题

0

回帖

13

积分

新手上路

积分
13
发表于 2024-9-4 15:18:37 | 显示全部楼层 |阅读模式
目录引言安装PythonExcel库Python按工作表拆分ExcelPython按行拆分ExcelPython按列拆分ExcelPython按内容拆分Excel引言拆分Excel文件是一种将大型工作簿分割为更小、更易管理的部分的有效方法。当面对包含大量数据或复杂信息的工作簿时,拆分文件可以简化数据管理、提高数据处理和分析的效率。在Excel中,有几种方法可以拆分文件:按工作表拆分按行拆分按列拆分按内容拆分接下来,我们将探讨如何使用Python实现以上4种Excel文件拆分方式。安装PythonExcel库要在Python中实现拆分Excel文件,首先需要安装Excel库。本文所使用的库是Spire.XLSforPython,它可以通过以下pip命令进行安装:pipinstallSpire.XLSPython按工作表拆分ExcelExcel文件通常包含多个工作表,每个工作表代表不同的数据集或主题。你可以根据工作表将文件拆分成多个单独的文件,使每个文件只包含一个工作表。以下代码将一个Excel文件按照工作表进行拆分:fromspire.xlsimportWorkbook,FileFormat#定义一个extract_worksheets函数,用于从一个Excel文件中提取每个工作表到一个新的Excel文件defextract_worksheets(workbook,output_folder):#遍历文件中的工作表forworksheetinworkbook.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工作表按照特定行数进行拆分:fromspire.xlsimportWorkbook,FileFormat#定义一个extract_rows()函数,用于从Excel工作表中提取特定行到新的Excel文件中defextract_rows(worksheet,start_row,end_row,output_file_path):#创建一个新的工作簿用于提取的行new_workbook=Workbook()#清除新工作簿中的默认工作表new_workbook.Worksheets.Clear()#在新工作簿中添加一个新的工作表new_worksheet=new_workbook.Worksheets.Add("Sheet1")ifstart_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工作表按照特定列数进行拆分:fromspire.xlsimportWorkbook,FileFormat#定义一个extract_columns()函数,用于从Excel工作表中提取特定列到新的Excel文件中defextract_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工作表按照特定数据进行拆分:fromspire.xlsimportWorkbook,FileFormat,FindType,ExcelFindOptions#定义一个extract_rows_by_value()函数,用于根据特定值从Excel工作表中提取行到新的Excel文件中defextract_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#遍历找到的单元格forrangeinranges:#获取包含单元格的行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()
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-12 20:47 , Processed in 1.164879 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表