在处理大型的 Excel 文件时,有时我们需要将其拆分成更小的部分,以便更高效地处理数据和进行分析。拆分 Excel 文件可以有多种优势,例如减少文件的大小、提高计算速度、更灵活地处理数据以及方便多人协作等。这篇文章将介绍如何使用 Spire.XLS for Python 和 Python 拆分 Excel 文件。
安装 Spire.XLS for Python
此教程需要 Spire.XLS for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.XLS
如果您不确定如何安装,请参考: 如何在 Windows 中安装 Spire.XLS for Python
Python 按工作表拆分 Excel
如果你的 Excel 文件包含多个工作表,你可以使用 Spire.XLS for Python 提供的 Workbook.Worksheets.AddCopy() 方法将每个工作表拆分为一个独立的 Excel 文件。具体步骤如下:
- 创建 Workbook 类的对象。
- 使用 Workbook.LoadFromFile() 方法加载原始 Excel 文件。
- 遍历 Excel 文件中的工作表。
- 为每个工作表创建一个新的 Workbook 对象。
- 使用 Workbook.Worksheets.Clear() 方法删除新工作簿中的默认工作表。
- 使用 Workbook.Worksheets.AddCopy() 方法将原始 Excel 文件中的工作表复制到新工作簿中。
- 使用 Workbook.SaveToFile() 方法将新工作簿保存为单独的 Excel 文件。
- Python
from spire.xls import *
from spire.xls.common import *
# 创建 Workbook 类的对象
workbook = Workbook()
# 加载 Excel 文件
workbook.LoadFromFile("示例.xlsx")
# 指定存放生成的 Excel 文件的文件夹路径
folderPath = "C:\\Users\\Administrator\\Desktop\\Output\\"
# 遍历 Excel 文件中的所有工作表
for worksheet in workbook.Worksheets:
# 创建一个新的 Workbook 对象
newWorkbook = Workbook()
# 删除新工作簿中的工作表
newWorkbook.Worksheets.Clear()
# 将工作表从 Excel 文件复制到新工作簿
newWorkbook.Worksheets.AddCopy(worksheet)
# 将新工作簿保存到指定文件夹
newWorkbook.SaveToFile(folderPath + worksheet.Name + ".xlsx", FileFormat.Version2016)
workbook.Dispose()
Python 按行拆分 Excel
如果在一个大型的 Excel 工作表中,有一些特定数量的行代表独立的记录或条目,那么你可以使用 Worksheet.CopyRow() 方法将这些行提取出来,保存到单独的 Excel 文件中。这样做可以更方便地针对这些记录进行针对性的数据分析和处理。具体步骤如下:
- 创建 Workbook 类的对象。
- 使用 Workbook.LoadFromFile() 方法加载 Excel 文件。
- 使用 Workbook.Worksheets[index] 属性获取包含需要提取的行的原始工作表。
- 创建一个新的 Workbook 对象,并使用 Workbook.Worksheets.Clear() 方法删除新工作簿中的默认工作表。
- 使用 Workbook.Worksheets.Add() 方法给新工作簿添加一个新工作表。
- 使用 Worksheet.CopyRow() 方法将特定行从原始工作表复制到新工作表。
- 将列宽从原始工作表复制到新工作表。
- 使用 Workbook.SaveToFile() 方法将新工作簿保存为单独的 Excel 文件。
- Python
from spire.xls import *
from spire.xls.common import *
# 创建 Workbook 对象并加载 Excel 文件
workbook = Workbook()
workbook.LoadFromFile("示例.xlsx")
# 获取原始(第一个)工作表
worksheet = workbook.Worksheets[0]
# 获取表头行
header = worksheet.Rows[0]
# 指定生成的 Excel 文件的文件夹路径
folderPath = "C:\\Users\\Administrator\\Desktop\\Output\\"
# 创建一个新的 Workbook 对象
newWorkbook1 = Workbook()
# 删除默认的工作表
newWorkbook1.Worksheets.Clear()
# 添加一个新的工作表
newWorksheet1 = newWorkbook1.Worksheets.Add("Sheet1")
# 将原始工作表的第 1-5 行复制到新工作表
for i in range(1, 6):
worksheet.CopyRow(worksheet.Rows[i - 1], newWorksheet1, newWorksheet1.LastDataRow + 1, CopyRangeOptions.All)
# 将原始工作表的列宽复制到新工作表
for i in range(worksheet.Columns.Count):
newWorksheet1.SetColumnWidth(i + 1, worksheet.GetColumnWidth(i + 1))
# 将新工作簿保存到指定文件夹
newWorkbook1.SaveToFile(folderPath + "1-5行.xlsx", FileFormat.Version2016)
newWorkbook1.Dispose()
# 创建一个新的 Workbook 对象
newWorkbook2 = Workbook()
# 删除默认的工作表
newWorkbook2.Worksheets.Clear()
# 添加一个新的工作表
newWorksheet2 = newWorkbook2.Worksheets.Add("Sheet1")
# 将原始工作表的表头行复制到新工作表
worksheet.CopyRow(worksheet.Rows[0], newWorksheet2, newWorksheet2.LastDataRow + 1, CopyRangeOptions.All)
# 将原始工作表的第 6-10 行复制到新工作表
for i in range(6, 11):
worksheet.CopyRow(worksheet.Rows[i - 1], newWorksheet2, newWorksheet2.LastDataRow + 1, CopyRangeOptions.All)
# 将原始工作表的列宽复制到新工作表
for i in range(worksheet.Columns.Count):
newWorksheet2.SetColumnWidth(i + 1, worksheet.GetColumnWidth(i + 1))
# 将新工作簿保存到指定文件夹
newWorkbook2.SaveToFile(folderPath + "6-10行.xlsx", FileFormat.Version2016)
newWorkbook2.Dispose()
Python 按列拆分 Excel
除了按行拆分之外,你还可以使用 Worksheet.CopyColumn() 方法将 Excel 工作表按列进行拆分。具体步骤如下:
- 创建 Workbook 类的对象。
- 使用 Workbook.LoadFromFile() 方法加载 Excel 文件。
- 使用 Workbook.Worksheets[index] 属性获取包含需要提取的列的原始工作表。
- 创建一个新的 Workbook 对象,并使用 Workbook.Worksheets.Clear() 方法删除新工作簿中的默认工作表。
- 使用 Workbook.Worksheets.Add() 方法给新工作簿添加一个新的工作表。
- 使用 Worksheet.CopyColumn() 方法将特定列从原始工作表复制到新工作表。
- 将行高从原始工作表复制到新工作表。
- 使用 Workbook.SaveToFile() 方法将新工作簿保存为单独的 Excel 文件。
- Python
from spire.xls import *
from spire.xls.common import *
# 创建一个 Workbook 对象并加载 Excel 文件
workbook = Workbook()
workbook.LoadFromFile("示例.xlsx")
# 获取原始(第一个)工作表
worksheet = workbook.Worksheets[0]
# 指定生成的 Excel 文件的文件夹路径
folderPath = "C:\\Users\\Administrator\\Desktop\\Output\\"
# 创建一个新的 Workbook 对象
newWorkbook1 = Workbook()
# 删除默认的工作表
newWorkbook1.Worksheets.Clear()
# 添加一个新的工作表
newWorksheet1 = newWorkbook1.Worksheets.Add("Sheet1")
# 从原始工作表复制第 1-2 列到新工作表
for i in range(1, 3):
worksheet.CopyColumn(worksheet.Columns[i-1], newWorksheet1, newWorksheet1.LastDataColumn + 1, CopyRangeOptions.All)
# 从原始工作表复制行高到新工作表
for i in range(worksheet.Rows.Count):
newWorksheet1.SetRowHeight(i + 1, worksheet.GetRowHeight(i + 1))
# 将新工作簿保存到指定文件夹
newWorkbook1.SaveToFile(folderPath + "1-2列.xlsx", FileFormat.Version2016)
newWorkbook1.Dispose()
# 创建一个新的 Workbook 对象
newWorkbook2 = Workbook()
# 删除默认的工作表
newWorkbook2.Worksheets.Clear()
# 添加一个新的工作表
newWorksheet2 = newWorkbook2.Worksheets.Add("Sheet1")
# 从原始工作表复制第 3-5 列到新工作表
for i in range(3, 6):
worksheet.CopyColumn(worksheet.Columns[i-1], newWorksheet2, newWorksheet2.LastDataColumn + 1, CopyRangeOptions.All)
# 从原始工作表复制行高到新工作表
for i in range(worksheet.Rows.Count):
newWorksheet2.SetRowHeight(i + 1, worksheet.GetRowHeight(i + 1))
# 将新工作簿保存到指定文件夹
newWorkbook2.SaveToFile(folderPath + "3-5列.xlsx", FileFormat.Version2016)
newWorkbook2.Dispose()
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。