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

python快速拆分excel文件中的所有sheet表的實用腳本

 更新時間:2025年07月29日 09:55:37   作者:Kyln.Wu  
在數(shù)據(jù)處理、財務分析以及其他領域中,經(jīng)常需要對大型Excel文件進行管理,本文將介紹如何使用Python編寫一個腳本,可以將一個excel文件中的所有sheet表拆成單獨的文件并保持表格的格式,需要的小伙伴可以了解下

引言

在數(shù)據(jù)處理、財務分析以及其他領域中,經(jīng)常需要對大型Excel文件進行管理。一個常見的需求是將包含多個工作表(或稱工作簿)的Excel文件拆分成獨立的Excel文件,以便于后續(xù)操作和管理。本文將介紹如何使用Python編寫一個腳本,實現(xiàn)這一功能,并詳細解釋代碼的功能、應用場景以及如何對其進行擴展。

代碼解析

1.導入必要的庫

from tkinter import filedialog, messagebox

這里導入了tkinter庫中的filedialogmessagebox模塊,用于創(chuàng)建用戶界面組件(如文件選擇框)和顯示提示信息。

2.定義打開文件的函數(shù) open_file()

def open_file():
    root = tk.Tk()
    root.withdraw()
    f_path = filedialog.askopenfilename()
    return f_path

該函數(shù)使用tkinter中的askopenfilename()方法創(chuàng)建一個文件選擇框,用戶可以選擇任意Excel文件。調(diào)用root.withdraw()后隱藏主窗口,返回用戶的選中路徑。

3.定義處理工作表并拆分的函數(shù) sheet2excel()

獲取保存路徑:通過再次使用tkinter中的組件創(chuàng)建一個對話框,允許用戶指定保存的目標目錄。

def save_directory():
    root = tk.Tk()
    root.withdraw()
    f_path = filedialog.askdirectory()
    return f_path

讀取原Excel文件

origin_excel = load_workbook(filename=file_path)
origin_sheet_names = origin_excel.sheetnames

使用load_workbook()方法讀取Excel文件,并獲取所有工作表(sheet)的名稱。

顯示提示信息:使用messagebox.showinfo()提示用戶當前處理的情況。

messagebox.showinfo('提示', f'一共有{len(origin_sheet_names)}個sheet,名稱分別為:{origin_sheet_names}\n拆分開始')

處理每個工作表并保存為單獨文件

if len(origin_sheet_names) > 1:
    for j in range(len(origin_sheet_names)):
        wb = load_workbook(filename=file_path)
        sheet = wb[origin_sheet_names[j]]
        wb.copy_worksheet(sheet)
        new_filename = origin_sheet_names[j] + '.xlsx'
        # 刪除多余的工作表
        for i in range(len(origin_sheet_names)):
            sheet1 = wb[origin_sheet_names[i]]
            wb.remove(sheet1)
        new_path = save_path + "/" + new_filename
        messagebox.showinfo('提示', f"{new_filename} 已保存到{save_path}")
        wb.save(filename=new_path)
        # 調(diào)整工作表名稱字段
        new = load_workbook(filename=new_path)
        news = new.active
        news.title = origin_sheet_names[j]
        new.save(filename=new_path)
    messagebox.showinfo('提示', '拆分完成!')
else:
    raise Exception('提示', f"你的文件只有一個sheet,難道還要拆分嗎?你的文件名{file_path}")

這部分代碼的主要邏輯包括:

  • 遍歷每個工作表
  • 復制工作表并將其命名為當前工作表的名稱
  • 刪除多余的工作表
  • 保存到指定目錄,并調(diào)整工作表名稱字段以確保文件名正確

應用場景

該腳本適用于以下情況:

  • 大型Excel文件處理:當需要將包含多個工作表的大文件拆分成獨立的小文件以便管理或導入其他系統(tǒng)。
  • 自動化數(shù)據(jù)遷移:在自動化工作中,經(jīng)常需要將處理后的數(shù)據(jù)保存到特定目錄中。此腳本可以作為基礎,結合自動化流程使用。
  • 數(shù)據(jù)清洗與分析:對多個工作表分別進行清洗和分析后,可能需要將結果分開存儲以便后續(xù)操作。

擴展與改寫

1.增加更多功能

  • 添加錯誤處理模塊,以捕捉在復制或保存過程中可能出現(xiàn)的錯誤。
  • 支持其他格式文件(如CSV、TXT等)的轉換。
  • 提供批量處理選項,例如按名稱或擴展名分類工作表。

2.優(yōu)化性能

  • 使用xlrd庫或其他高效的Excel解析庫來提高讀取速度。
  • 添加日志記錄功能,以追蹤處理過程中的每一步操作,便于調(diào)試和監(jiān)控。

3.界面改進

  • 將現(xiàn)有代碼整合到一個完整的GUI應用程序中,增加更多的用戶交互選項(如可以選擇保存格式、顏色調(diào)整等)。
  • 提供多語言支持或國際化字符串。

完整代碼

# -*- coding:   utf-8 -*-
# @Time     :   2023-02-11 10:25   
# @Author   :   Kyln.Wu
# @Email    :   kylnwu@qq.com
# @FileName :   把一個工作簿里的所有sheet拆分為單獨文件.py
# @IDE      :   PyCharm
from openpyxl import load_workbook
from tkinter import filedialog
import tkinter as tk
from tkinter import messagebox


def open_file():
    root = tk.Tk()
    root.withdraw()
    f_path = filedialog.askopenfilename()
    return f_path


def sheet2excel(file_path):
    # 先讀取一次文件,獲取sheet表的名稱
    messagebox.showinfo("第二步", "請選擇保存的文件夾:")

    def save_directory():
        root = tk.Tk()
        root.withdraw()
        f_path = filedialog.askdirectory()
        return f_path

    save_path = save_directory()
    origin_excel = load_workbook(filename=file_path)  # 讀取原excel文件
    origin_sheet_names = origin_excel.sheetnames  # 獲取sheet的名稱
    messagebox.showinfo('提示', f'一共有{len(origin_sheet_names)}個sheet,名稱分別為:{origin_sheet_names}\n拆分開始')

    if len(origin_sheet_names) > 1:  # 如果sheetnames小于1,報錯:該文件不需要拆分
        for j in range(len(origin_sheet_names)):
            wb = load_workbook(filename=file_path)  # 再讀取一次文件,由于每次刪除后需要保存一次,所以不能與上一次一樣
            sheet = wb[origin_sheet_names[j]]
            wb.copy_worksheet(sheet)
            new_filename = origin_sheet_names[j] + '.xlsx'  # 新建一個sheet命名的excel文件
            for i in range(len(origin_sheet_names)):
                sheet1 = wb[origin_sheet_names[i]]
                wb.remove(sheet1)
            new_path = save_path + "/" + new_filename
            messagebox.showinfo('提示', f"{new_filename} 已保存到{save_path}")
            wb.save(filename=new_path)
            # 由于使用copy_worksheet后,sheet表名有copy字段,這里做個調(diào)整
            new = load_workbook(filename=new_path)
            news = new.active
            news.title = origin_sheet_names[j]
            new.save(filename=new_path)
        messagebox.showinfo('提示', '拆分完成!')
    else:
        raise Exception('提示', f"你的文件只有一個sheet,難道還要拆分嗎?你的文件名{file_path}")


if __name__ == '__main__':
    messagebox.showinfo("第一步", "選擇要拆解的excel文件:")
    path = open_file()
    sheet2excel(path)

總結

該Python腳本通過簡單的循環(huán)和文件操作實現(xiàn)了將Excel工作簿中的所有工作表拆分成獨立文件的功能。盡管代碼較為基礎,但對于處理需要獨立工作表的場景來說已經(jīng)足夠。通過增加更多的功能和優(yōu)化性能,可以進一步提升腳本的應用價值。

到此這篇關于python快速拆分excel文件中的所有sheet表的實用腳本的文章就介紹到這了,更多相關python拆分excel內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python中的Joblib庫使用學習總結

    Python中的Joblib庫使用學習總結

    這篇文章主要介紹了Python中的Joblib庫使用學習總結,Joblib是一組在Python中提供輕量級流水線的工具,Joblib已被優(yōu)化得很快速,很健壯了,特別是在大數(shù)據(jù)上,并對numpy數(shù)組進行了特定的優(yōu)化,需要的朋友可以參考下
    2023-08-08
  • Python中的分布式框架Ray的安裝與使用教程

    Python中的分布式框架Ray的安裝與使用教程

    Ray框架下不僅可以通過conda和Python十分方便的構建一個集群,還可以自動的對分布式任務進行并發(fā)處理,且支持GPU分布式任務的提交,本文介紹了基于Python的分布式框架Ray的基本安裝與使用,感興趣的朋友一起看看吧
    2024-08-08
  • Python通過OpenCV的findContours獲取輪廓并切割實例

    Python通過OpenCV的findContours獲取輪廓并切割實例

    這篇文章主要介紹了Python通過OpenCV的findContours獲取輪廓并切割實例,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • Python Opencv任意形狀目標檢測并繪制框圖

    Python Opencv任意形狀目標檢測并繪制框圖

    這篇文章主要為大家詳細介紹了Python Opencv任意形狀目標檢測,并繪制框圖,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Python的閉包和裝飾器你真的了解嗎

    Python的閉包和裝飾器你真的了解嗎

    這篇文章主要為大家詳細介紹了Python的閉包和裝飾器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Python3基本輸入與輸出操作實例分析

    Python3基本輸入與輸出操作實例分析

    這篇文章主要介紹了Python3基本輸入與輸出操作,結合實例形式分析了Python3輸入輸出基本語法、編碼轉換、注釋及中文編碼相關使用技巧,需要的朋友可以參考下
    2020-02-02
  • Python使用Yagmail庫實現(xiàn)自動化郵件營銷

    Python使用Yagmail庫實現(xiàn)自動化郵件營銷

    在數(shù)字營銷領域,自動化郵件營銷是一種高效、低成本的方式,能夠幫助企業(yè)與客戶保持溝通,提升品牌忠誠度,而Yagmail是一個簡潔且功能強大的Python庫,可以大大簡化郵件發(fā)送的過程,本文將詳細介紹如何使用Yagmail庫來實現(xiàn)自動化郵件營銷,需要的朋友可以參考下
    2024-12-12
  • Python正則表達式中的量詞符號與組問題小結

    Python正則表達式中的量詞符號與組問題小結

    這篇文章主要介紹了Python正則表達式中的量詞符號與組問題小結,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • 快速解決jupyter notebook啟動需要密碼的問題

    快速解決jupyter notebook啟動需要密碼的問題

    這篇文章主要介紹了快速解決jupyter notebook啟動需要密碼的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python實現(xiàn)線性插值的示例

    python實現(xiàn)線性插值的示例

    線性插值是針對一維數(shù)據(jù)的插值方法,它根據(jù)一維數(shù)據(jù)序列中需要插值的點的左右臨近兩個數(shù)據(jù)來進行數(shù)值估計,這篇文章主要介紹了python實現(xiàn)線性插值,需要的朋友可以參考下
    2022-12-12

最新評論

临朐县| 罗田县| 平邑县| 博白县| 兴城市| 大同市| 湖南省| 洪雅县| 呼和浩特市| 汨罗市| 桦甸市| 惠州市| 贺州市| 湛江市| 江阴市| 涞水县| 东宁县| 鄂伦春自治旗| 浙江省| 广饶县| 阿拉善盟| 大庆市| 越西县| 建阳市| 河东区| 行唐县| 大同市| 宝兴县| 德庆县| 连城县| 高碑店市| 新巴尔虎左旗| 平原县| 磐石市| 固始县| 龙游县| 科尔| 建宁县| 花莲市| 济源市| 高清|