最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python使用Spire.XLS自動(dòng)化拆分Excel文件的四大場(chǎng)景實(shí)現(xiàn)詳解

 更新時(shí)間:2026年07月26日 09:03:11   作者:E_ICEBLUE  
在今天的教程中,我們將借助 Spire.XLS for Python 介紹如何在 Python 環(huán)境中實(shí)現(xiàn) Excel 拆分,文章將分別展示按照工作表、行、列以及指定條件拆分 Excel 的方法,幫助你根據(jù)實(shí)際需求選擇合適的處理方式

在日常辦公和數(shù)據(jù)處理中,Excel 憑借其直觀的表格結(jié)構(gòu)和豐富的數(shù)據(jù)處理功能,被廣泛應(yīng)用于報(bào)表統(tǒng)計(jì)、數(shù)據(jù)管理以及信息整理等場(chǎng)景。但隨著數(shù)據(jù)規(guī)模不斷增加,一個(gè) Excel 文件中可能包含多個(gè)工作表、大量數(shù)據(jù)記錄,或者不同類(lèi)型的數(shù)據(jù)內(nèi)容。

但當(dāng)我們需要進(jìn)一步整理這些數(shù)據(jù)時(shí),直接在 Excel 中操作往往會(huì)比較繁瑣。例如,將不同工作表單獨(dú)保存、按照固定行數(shù)拆分大型文件,或者根據(jù)某個(gè)字段生成多個(gè)獨(dú)立文件。如果全都依靠手動(dòng)復(fù)制粘貼完成,不僅效率較低,還容易出現(xiàn)數(shù)據(jù)遺漏。而通過(guò) Python 自動(dòng)化拆分 Excel 文件,可以有效減少重復(fù)操作,提高數(shù)據(jù)處理效率。

在今天的教程中,我們將借助 Spire.XLS for Python 介紹如何在 Python 環(huán)境中實(shí)現(xiàn) Excel 拆分。文章將分別展示按照工作表、行、列以及指定條件拆分 Excel 的方法,幫助你根據(jù)實(shí)際需求選擇合適的處理方式。

環(huán)境準(zhǔn)備

在開(kāi)始拆分 Excel 文件之前,需要先安裝 Spire.XLS for Python。該組件提供了豐富的 Excel 文檔處理接口,可以幫助開(kāi)發(fā)者在不依賴(lài) Microsoft Office 的情況下完成 Excel 創(chuàng)建、讀取、修改以及格式轉(zhuǎn)換等操作。

你可以通過(guò) pip install spire.xls 快速安裝 Spire.XLS for Python,此外該組件還提供免費(fèi)版,適合用于小型項(xiàng)目和測(cè)試。

安裝完成后,導(dǎo)入相關(guān)模塊即可開(kāi)始使用:

from spire.xls import *
from spire.xls.common import *

在本文中,我們主要會(huì)用到以下幾個(gè)核心對(duì)象:

對(duì)象作用
Workbook表示整個(gè) Excel 工作簿
Worksheet表示工作簿中的工作表
Range表示單元格區(qū)域

通過(guò) Python 按工作表拆分 Excel 文件

一個(gè) Excel 工作簿通??赡馨鄠€(gè)工作表,例如不同月份的數(shù)據(jù)、不同地區(qū)的報(bào)表等。如果希望將每個(gè)工作表單獨(dú)保存為一個(gè) Excel 文件,可以通過(guò)遍歷 Workbook 中的 Worksheet 實(shí)現(xiàn)自動(dòng)拆分。

使用 Spire.XLS 時(shí),只需要加載原始文件,遍歷所有工作表,然后創(chuàng)建新的 Workbook 并復(fù)制對(duì)應(yīng)工作表即可。

主要實(shí)現(xiàn)步驟如下:

  1. 創(chuàng)建 Workbook 對(duì)象并加載 Excel 文件;
  2. 遍歷工作簿中的所有 Worksheet;
  3. 創(chuàng)建新的 Workbook;
  4. 使用 AddCopy() 方法復(fù)制工作表;
  5. 保存生成的 Excel 文件。

完整代碼如下:

from spire.xls import *
from spire.xls.common import *

# 創(chuàng)建 Workbook 對(duì)象并加載 Excel 文件
workbook = Workbook()
workbook.LoadFromFile("/input/示例.xlsx")

# 設(shè)置拆分后文件的保存路徑
output_path = "/output/按表拆分/"

# 遍歷工作簿中的所有工作表
for sheet in workbook.Worksheets:

    # 創(chuàng)建新的 Workbook 對(duì)象,并刪除默認(rèn)工作表
    new_workbook = Workbook()
    new_workbook.Worksheets.Clear()

    # 將當(dāng)前工作表復(fù)制到新的工作簿中
    new_workbook.Worksheets.AddCopy(sheet)

    # 以當(dāng)前工作表名稱(chēng)命名,并保存為獨(dú)立的 Excel 文件
    new_workbook.SaveToFile(
        output_path + sheet.Name + ".xlsx",
        FileFormat.Version2016
    )

    # 釋放資源
    new_workbook.Dispose()

workbook.Dispose()

運(yùn)行代碼后,原 Excel 中的每個(gè)工作表都會(huì)被單獨(dú)保存為一個(gè)新的工作簿。

通過(guò) Python 按行拆分 Excel 文件

除了按照工作表拆分外,還可以根據(jù)數(shù)據(jù)行數(shù)量對(duì) Excel 文件進(jìn)行拆分。當(dāng)一個(gè)工作表包含大量數(shù)據(jù)時(shí),可以將其按照指定行數(shù)拆分成多個(gè)文件,方便后續(xù)管理和處理。

使用這種方式時(shí),需要獲取工作表總行數(shù),并設(shè)置每個(gè)文件包含的數(shù)據(jù)行數(shù)量,然后通過(guò) CopyRow() 方法將指定范圍的數(shù)據(jù)復(fù)制到新的工作簿中。

實(shí)現(xiàn)步驟如下:

  1. 加載 Excel 文件;
  2. 獲取工作表數(shù)據(jù)行數(shù);
  3. 設(shè)置每個(gè)文件包含的行數(shù);
  4. 創(chuàng)建新的 Workbook;
  5. 復(fù)制指定行數(shù)據(jù)并保存。

下面是可參考的完整代碼示例:

from spire.xls import *
from spire.xls.common import *


# 創(chuàng)建 Workbook 對(duì)象并加載 Excel 文件
workbook = Workbook()
workbook.LoadFromFile(
    "/input/示例.xlsx"
)

# 獲取第一個(gè)工作表
worksheet = workbook.Worksheets[0]

# 設(shè)置文件保存路徑
folderPath = "/output/按行拆分/"

# 將第 1-5 行拆分到新文件

# 創(chuàng)建新的 Workbook,并刪除默認(rèn)工作表
newWorkbook1 = Workbook()
newWorkbook1.Worksheets.Clear()

# 添加新的工作表
newWorksheet1 = newWorkbook1.Worksheets.Add("Sheet1")

# 復(fù)制第 1-5 行數(shù)據(jù)
for i in range(1, 6):
    worksheet.CopyRow(
        worksheet.Rows[i - 1],
        newWorksheet1,
        newWorksheet1.LastDataRow + 1,
        CopyRangeOptions.All
    )

# 復(fù)制列寬
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()


# 將第 6-11 行拆分到新文件

# 創(chuàng)建新的 Workbook,并清除默認(rèn)工作表
newWorkbook2 = Workbook()
newWorkbook2.Worksheets.Clear()

# 添加新的工作表
newWorksheet2 = newWorkbook2.Worksheets.Add("Sheet1")

# 復(fù)制表頭(第1行)
worksheet.CopyRow(
    worksheet.Rows[0],
    newWorksheet2,
    newWorksheet2.LastDataRow + 1,
    CopyRangeOptions.All
)

# 復(fù)制第6-11行數(shù)據(jù)
for i in range(6, 12):
    worksheet.CopyRow(
        worksheet.Rows[i - 1],
        newWorksheet2,
        newWorksheet2.LastDataRow + 1,
        CopyRangeOptions.All
    )

# 復(fù)制列寬
for i in range(worksheet.Columns.Count):
    newWorksheet2.SetColumnWidth(
        i + 1,
        worksheet.GetColumnWidth(i + 1)
    )

# 保存文件
newWorkbook2.SaveToFile(
    folderPath + "6-11行.xlsx",
    FileFormat.Version2016
)

newWorkbook2.Dispose()
workbook.Dispose()

通過(guò) Python 按列拆分 Excel 文件

在處理 Excel 數(shù)據(jù)時(shí),有時(shí)我們并不需要拆分整個(gè)工作表,而是希望將其中部分列單獨(dú)提取出來(lái)。例如,一個(gè)表格中同時(shí)包含員工基礎(chǔ)信息、銷(xiāo)售記錄和財(cái)務(wù)數(shù)據(jù),但這些內(nèi)容需要分別提供給不同人員查看。

這種情況下,可以按照列的位置拆分 Excel,將指定范圍內(nèi)的列復(fù)制到新的工作簿中。Spire.XLS 提供了 CopyColumn() 方法,可以方便地復(fù)制目標(biāo)列,同時(shí)保留原有單元格格式。

實(shí)現(xiàn)步驟如下:

  1. 創(chuàng)建新的 Workbook;
  2. 添加新的 Worksheet;
  3. 使用 CopyColumn() 復(fù)制目標(biāo)列;
  4. 設(shè)置行高并保存文件。

完整代碼示例如下:

from spire.xls import *
from spire.xls.common import *

# 創(chuàng)建 Workbook 對(duì)象并加載 Excel 文件
workbook = Workbook()
workbook.LoadFromFile(
    "/input/示例.xlsx"
)

# 獲取第一個(gè)工作表
worksheet = workbook.Worksheets[0]
# 設(shè)置輸出路徑
folderPath = "/output/按列拆分/"


# 拆分第 1-2 列(A-B列)

# 創(chuàng)建新的 Workbook,并刪除默認(rèn)工作表
newWorkbook1 = Workbook()
newWorkbook1.Worksheets.Clear()

# 添加新的工作表
newWorksheet1 = newWorkbook1.Worksheets.Add("Sheet1")

# 復(fù)制第1-2列
for i in range(1, 3):
    worksheet.CopyColumn(
        worksheet.Columns[i - 1],
        newWorksheet1,
        newWorksheet1.LastDataColumn + 1,
        CopyRangeOptions.All
    )

# 復(fù)制行高
for i in range(worksheet.Rows.Count):
    newWorksheet1.SetRowHeight(
        i + 1,
        worksheet.GetRowHeight(i + 1)
    )

# 保存文件
newWorkbook1.SaveToFile(
    folderPath + "AB.xlsx",
    FileFormat.Version2016
)

newWorkbook1.Dispose()


# 拆分第 3-5 列(C-E列)

# 創(chuàng)建一個(gè) Workbook,并刪除默認(rèn)工作表
newWorkbook2 = Workbook()
newWorkbook2.Worksheets.Clear()

# 添加新的工作表
newWorksheet2 = newWorkbook2.Worksheets.Add("Sheet1")

# 復(fù)制第3-5列
for i in range(3, 6):
    worksheet.CopyColumn(
        worksheet.Columns[i - 1],
        newWorksheet2,
        newWorksheet2.LastDataColumn + 1,
        CopyRangeOptions.All
    )

# 復(fù)制行高
for i in range(worksheet.Rows.Count):
    newWorksheet2.SetRowHeight(
        i + 1,
        worksheet.GetRowHeight(i + 1)
    )

# 保存文件
newWorkbook2.SaveToFile(
    folderPath + "CDE.xlsx",
    FileFormat.Version2016
)

newWorkbook2.Dispose()

# 拆分第 6 列(F列)

# 創(chuàng)建一個(gè) Workbook,并刪除默認(rèn)工作表
newWorkbook3 = Workbook()
newWorkbook3.Worksheets.Clear()
# 添加新的工作表
newWorksheet3 = newWorkbook3.Worksheets.Add("Sheet1")

# 復(fù)制第6列
worksheet.CopyColumn(
    worksheet.Columns[5],
    newWorksheet3,
    newWorksheet3.LastDataColumn + 1,
    CopyRangeOptions.All
)

# 復(fù)制行高
for i in range(worksheet.Rows.Count):
    newWorksheet3.SetRowHeight(
        i + 1,
        worksheet.GetRowHeight(i + 1)
    )

# 保存文件
newWorkbook3.SaveToFile(
    folderPath + "F.xlsx",
    FileFormat.Version2016
)

newWorkbook3.Dispose()
workbook.Dispose()

實(shí)踐:通過(guò) Python 按指定條件拆分 Excel

相比上面我們介紹的固定規(guī)則,在實(shí)踐中更常見(jiàn)的是根據(jù) Excel 某一列中的數(shù)據(jù)內(nèi)容進(jìn)行分類(lèi)拆分。例如,員工信息表中的“部門(mén)”列包含銷(xiāo)售部、技術(shù)部、人事部等不同值,希望自動(dòng)將屬于同一部門(mén)的數(shù)據(jù)整理到一個(gè)獨(dú)立文件中;銷(xiāo)售數(shù)據(jù)也可以按照地區(qū)、月份等條件生成不同報(bào)表。

按條件拆分 Excel 工作表的方式更加貼合實(shí)際需求。它可以根據(jù) Excel 中的數(shù)據(jù)內(nèi)容自動(dòng)分類(lèi),無(wú)需手動(dòng)篩選和復(fù)制,能夠快速生成符合不同業(yè)務(wù)規(guī)則的獨(dú)立 Excel 文件。

下面我們以“按照員工部門(mén)拆分 Excel”為例。假設(shè)員工信息表中包含姓名、部門(mén)、職位等字段,希望自動(dòng)生成:

銷(xiāo)售部.xlsx
技術(shù)部.xlsx
人事部.xlsx

每個(gè)文件只保存對(duì)應(yīng)部門(mén)的員工數(shù)據(jù)。

實(shí)現(xiàn)流程如下:

  1. 加載 Excel 文件;
  2. 指定拆分依據(jù)的列;
  3. 遍歷數(shù)據(jù)行并獲取分類(lèi)值;
  4. 根據(jù)分類(lèi)值創(chuàng)建新的 Workbook;
  5. 復(fù)制對(duì)應(yīng)數(shù)據(jù)行;
  6. 保存生成的 Excel 文件。
from spire.xls import *
from spire.xls.common import *

# 加載 Excel 文件
workbook = Workbook()
workbook.LoadFromFile("/員工信息.xlsx")

# 獲取第一個(gè)工作表
worksheet = workbook.Worksheets[0]

# 輸出目錄
folderPath = "/output/按條件拆分/"

# 用于保存不同部門(mén)對(duì)應(yīng)的 Workbook
department_books = {}

# 獲取總行數(shù)
row_count = worksheet.Rows.Count

# 設(shè)置按部門(mén)拆分
department_column = 3

# 遍歷數(shù)據(jù)行(跳過(guò)表頭)
for i in range(1, row_count):
    # 獲取部門(mén)名稱(chēng)
    department = worksheet.Range[i + 1, department_column].Value

    if department not in department_books:
        # 創(chuàng)建新的 Workbook
        newWorkbook = Workbook()
        newWorkbook.Worksheets.Clear()

        newWorksheet = newWorkbook.Worksheets.Add("Sheet1")

        # 復(fù)制表頭
        worksheet.CopyRow(
            worksheet.Rows[0],
            newWorksheet,
            newWorksheet.LastDataRow + 1,
            CopyRangeOptions.All
        )

        department_books[department] = newWorkbook

    # 獲取目標(biāo) Sheet
    newWorksheet = department_books[department].Worksheets[0]

    # 復(fù)制當(dāng)前行
    worksheet.CopyRow(
        worksheet.Rows[i],
        newWorksheet,
        newWorksheet.LastDataRow + 1,
        CopyRangeOptions.All
    )

# 保存文件
for department, wb in department_books.items():

    wb.SaveToFile(
        folderPath + department + ".xlsx",
        FileFormat.Version2016
    )
    wb.Dispose()

workbook.Dispose()

總結(jié)

Excel 拆分是數(shù)據(jù)整理過(guò)程中非常常見(jiàn)的需求。通過(guò) Python 結(jié)合 Spire.XLS,可以將原本需要手動(dòng)完成的復(fù)制、篩選和保存操作自動(dòng)化,大幅提高處理效率。

本文介紹了四種常見(jiàn)的 Excel 拆分方式:

  • 按工作表拆分:適用于多個(gè) Sheet 獨(dú)立保存;
  • 按行拆分:適用于大型數(shù)據(jù)文件分割;
  • 按列拆分:適用于字段分類(lèi)和權(quán)限管理;
  • 按條件拆分:適用于部門(mén)、地區(qū)、日期等實(shí)際業(yè)務(wù)場(chǎng)景。

根據(jù)不同的數(shù)據(jù)結(jié)構(gòu)和使用需求,選擇合適的拆分方式,可以更加高效地完成 Excel 文件處理任務(wù)。

以上就是Python使用Spire.XLS自動(dòng)化拆分Excel文件的四大場(chǎng)景實(shí)現(xiàn)詳解的詳細(xì)內(nèi)容,更多關(guān)于Python拆分Excel文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 通過(guò)LyScript實(shí)現(xiàn)從文本中讀寫(xiě)ShellCode

    通過(guò)LyScript實(shí)現(xiàn)從文本中讀寫(xiě)ShellCode

    LyScript 插件通過(guò)配合內(nèi)存讀寫(xiě),可實(shí)現(xiàn)對(duì)特定位置的ShellCode代碼的導(dǎo)出。本文將利用這一特性實(shí)現(xiàn)從文本中讀寫(xiě)ShellCode,感興趣的可以了解一下
    2022-08-08
  • Python數(shù)據(jù)分析之繪圖和可視化詳解

    Python數(shù)據(jù)分析之繪圖和可視化詳解

    信息可視化(也叫繪圖)是數(shù)據(jù)分析中最重要的工作之一.Python有許多庫(kù)進(jìn)行靜態(tài)或動(dòng)態(tài)的數(shù)據(jù)可視化,但這里主要關(guān)注matplotlib和基于它的庫(kù),文中有非常詳細(xì)的介紹,需要的朋友可以參考下
    2021-06-06
  • PyHacker實(shí)現(xiàn)網(wǎng)站后臺(tái)掃描器編寫(xiě)指南

    PyHacker實(shí)現(xiàn)網(wǎng)站后臺(tái)掃描器編寫(xiě)指南

    這篇文章主要為大家介紹了PyHacker實(shí)現(xiàn)網(wǎng)站后臺(tái)掃描器編寫(xiě)指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Python中操作符重載用法分析

    Python中操作符重載用法分析

    這篇文章主要介紹了Python中操作符重載用法,較為詳細(xì)的分析了Python操作符重載的功能,使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2016-04-04
  • django將圖片上傳數(shù)據(jù)庫(kù)后在前端顯式的方法

    django將圖片上傳數(shù)據(jù)庫(kù)后在前端顯式的方法

    今天小編就為大家分享一篇django將圖片上傳數(shù)據(jù)庫(kù)后在前端顯式的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 跟老齊學(xué)Python之編寫(xiě)類(lèi)之三子類(lèi)

    跟老齊學(xué)Python之編寫(xiě)類(lèi)之三子類(lèi)

    本文已經(jīng)是編寫(xiě)類(lèi)系列的第三篇了,也是最后一篇,介紹下子類(lèi),也算是個(gè)小總結(jié)吧,有需要的朋友可以參考下
    2014-10-10
  • tensorflow基于Anaconda環(huán)境搭建的方法步驟

    tensorflow基于Anaconda環(huán)境搭建的方法步驟

    本文主要介紹了tensorflow基于Anaconda環(huán)境搭建的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Pytest失敗重跑機(jī)制pytest-rerunfailures的實(shí)現(xiàn)

    Pytest失敗重跑機(jī)制pytest-rerunfailures的實(shí)現(xiàn)

    pytest-rerunfailures插件是解決自動(dòng)化測(cè)試偶發(fā)故障的有效工具,通過(guò)--reruns設(shè)置重試次數(shù)和--reruns-delay配置間隔時(shí)間,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-06-06
  • selenium+python 對(duì)輸入框的輸入處理方法

    selenium+python 對(duì)輸入框的輸入處理方法

    今天小編就為大家分享一篇selenium+python 對(duì)輸入框的輸入處理方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • 詳解Django中的FBV和CBV對(duì)比分析

    詳解Django中的FBV和CBV對(duì)比分析

    這篇文章主要介紹了 詳解Django中的FBV和CBV對(duì)比分析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03

最新評(píng)論

拉萨市| 苍南县| 故城县| 秦皇岛市| 洪洞县| 杭锦旗| 泰兴市| 从化市| 新河县| 永城市| 辛集市| 上杭县| 珲春市| 海宁市| 奎屯市| 榆树市| 石屏县| 辽中县| 民勤县| 南涧| 铅山县| 庄河市| 金塔县| 永福县| 合川市| 濮阳市| 林州市| 大丰市| 琼结县| 黑山县| 菏泽市| 友谊县| 巴青县| 新闻| 阳信县| 石台县| 越西县| 武陟县| 保山市| 莱州市| 鹤山市|