发布于2026-07-26 阅读(0)
扫一扫,手机访问
pip install spire.xls此外,该组件还有免费版,适合小项目或测试场景。安装完成后,导入模块就能开始:
from spire.xls import * from spire.xls.common import *本文会用到以下几个核心对象,先列个表方便理解:
| 对象 | 作用 |
|---|---|
| Workbook | 表示整个 Excel 工作簿 |
| Worksheet | 表示工作簿中的工作表 |
| Range | 表示单元格区域 |
AddCopy() 方法复制工作表。具体步骤如下:
from spire.xls import *
from spire.xls.common import *
# 创建 Workbook 对象并加载 Excel 文件
workbook = Workbook()
workbook.LoadFromFile("/input/示例.xlsx")
# 设置拆分后文件的保存路径
output_path = "/output/按表拆分/"
# 遍历工作簿中的所有工作表
for sheet in workbook.Worksheets:
# 创建新的 Workbook 对象,并删除默认工作表
new_workbook = Workbook()
new_workbook.Worksheets.Clear()
# 将当前工作表复制到新的工作簿中
new_workbook.Worksheets.AddCopy(sheet)
# 以当前工作表名称命名,并保存为独立的 Excel 文件
new_workbook.Sa veToFile(
output_path + sheet.Name + ".xlsx",
FileFormat.Version2016
)
# 释放资源
new_workbook.Dispose()
workbook.Dispose()
运行后,原 Excel 中的每个工作表都会单独保存成一个新文件,文件名就是工作表名。

CopyRow() 方法把指定范围的数据复制到新工作簿。
实现步骤如下:
from spire.xls import *
from spire.xls.common import *
# 创建 Workbook 对象并加载 Excel 文件
workbook = Workbook()
workbook.LoadFromFile("/input/示例.xlsx")
# 获取第一个工作表
worksheet = workbook.Worksheets[0]
# 设置文件保存路径
folderPath = "/output/按行拆分/"
# 将第 1-5 行拆分到新文件
newWorkbook1 = Workbook()
newWorkbook1.Worksheets.Clear()
newWorksheet1 = newWorkbook1.Worksheets.Add("Sheet1")
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.Sa veToFile(folderPath + "1-5行.xlsx", FileFormat.Version2016)
newWorkbook1.Dispose()
# 将第 6-11 行拆分到新文件(先复制表头)
newWorkbook2 = Workbook()
newWorkbook2.Worksheets.Clear()
newWorksheet2 = newWorkbook2.Worksheets.Add("Sheet1")
# 复制表头(第1行)
worksheet.CopyRow(
worksheet.Rows[0],
newWorksheet2,
newWorksheet2.LastDataRow + 1,
CopyRangeOptions.All
)
# 复制第6-11行数据
for i in range(6, 12):
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.Sa veToFile(folderPath + "6-11行.xlsx", FileFormat.Version2016)
newWorkbook2.Dispose()
workbook.Dispose()

CopyColumn() 方法,能保留原有的单元格格式。
实现步骤:
from spire.xls import *
from spire.xls.common import *
workbook = Workbook()
workbook.LoadFromFile("/input/示例.xlsx")
worksheet = workbook.Worksheets[0]
folderPath = "/output/按列拆分/"
# 拆分第 1-2 列(A-B列)
newWorkbook1 = Workbook()
newWorkbook1.Worksheets.Clear()
newWorksheet1 = newWorkbook1.Worksheets.Add("Sheet1")
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.Sa veToFile(folderPath + "AB.xlsx", FileFormat.Version2016)
newWorkbook1.Dispose()
# 拆分第 3-5 列(C-E列)
newWorkbook2 = Workbook()
newWorkbook2.Worksheets.Clear()
newWorksheet2 = newWorkbook2.Worksheets.Add("Sheet1")
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.Sa veToFile(folderPath + "CDE.xlsx", FileFormat.Version2016)
newWorkbook2.Dispose()
# 拆分第 6 列(F列)
newWorkbook3 = Workbook()
newWorkbook3.Worksheets.Clear()
newWorksheet3 = newWorkbook3.Worksheets.Add("Sheet1")
worksheet.CopyColumn(
worksheet.Columns[5],
newWorksheet3,
newWorksheet3.LastDataColumn + 1,
CopyRangeOptions.All
)
for i in range(worksheet.Rows.Count):
newWorksheet3.SetRowHeight(i + 1, worksheet.GetRowHeight(i + 1))
newWorkbook3.Sa veToFile(folderPath + "F.xlsx", FileFormat.Version2016)
newWorkbook3.Dispose()
workbook.Dispose()

每个文件只保存对应部门的员工数据。 实现流程:销售部.xlsx
技术部.xlsx
人事部.xlsx
from spire.xls import *
from spire.xls.common import *
# 加载 Excel 文件
workbook = Workbook()
workbook.LoadFromFile("/员工信息.xlsx")
# 获取第一个工作表
worksheet = workbook.Worksheets[0]
# 输出目录
folderPath = "/output/按条件拆分/"
# 用于保存不同部门对应的 Workbook
department_books = {}
# 获取总行数
row_count = worksheet.Rows.Count
# 设置按部门拆分(假设部门在第3列)
department_column = 3
# 遍历数据行(跳过表头)
for i in range(1, row_count):
# 获取部门名称
department = worksheet.Range[i + 1, department_column].Value
if department not in department_books:
# 创建新的 Workbook
newWorkbook = Workbook()
newWorkbook.Worksheets.Clear()
newWorksheet = newWorkbook.Worksheets.Add("Sheet1")
# 复制表头
worksheet.CopyRow(
worksheet.Rows[0],
newWorksheet,
newWorksheet.LastDataRow + 1,
CopyRangeOptions.All
)
department_books[department] = newWorkbook
# 获取目标 Sheet
newWorksheet = department_books[department].Worksheets[0]
# 复制当前行
worksheet.CopyRow(
worksheet.Rows[i],
newWorksheet,
newWorksheet.LastDataRow + 1,
CopyRangeOptions.All
)
# 保存文件
for department, wb in department_books.items():
wb.Sa veToFile(
folderPath + department + ".xlsx",
FileFormat.Version2016
)
wb.Dispose()
workbook.Dispose()

售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8