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

Python+PyQt5打造一個(gè)Excel批量列處理工具

 更新時(shí)間:2026年04月12日 08:10:01   作者:小莊-Python辦公  
在日常的辦公中,我們經(jīng)常會(huì)遇到需要批量處理Excel文件的情況,今天我們就用 Python + PyQt5 + Pandas 打造一款圖形化的Excel批量列處理工具,不僅支持一鍵拖拽文件,還能動(dòng)態(tài)選擇列名、添加多條處理規(guī)則,幫你徹底告別重復(fù)勞動(dòng)

在日常的辦公中,我們經(jīng)常會(huì)遇到需要批量處理Excel文件的情況。比如:給幾百個(gè)員工的姓名前面加上部門名稱,把一列包含完整地址的數(shù)據(jù)拆分成省、市、區(qū)多列,或者對(duì)某些產(chǎn)品的價(jià)格統(tǒng)一上調(diào)50元。如果只有一兩個(gè)文件,手動(dòng)改改還行;但如果是幾十個(gè)文件,或者每個(gè)月都要重復(fù)這些操作,那就太折磨人了!

今天,我們就用 Python + PyQt5 + Pandas 打造一款圖形化的“Excel批量列處理工具”,不僅支持一鍵拖拽文件,還能動(dòng)態(tài)選擇列名、添加多條處理規(guī)則,幫你徹底告別重復(fù)勞動(dòng)!

Python+PyQt5打造一個(gè)Excel批量列處理工具

工具亮點(diǎn)展示

這款工具具備以下強(qiáng)大的功能:

  1. 傻瓜式文件導(dǎo)入:支持點(diǎn)擊選擇或直接將多個(gè) Excel 文件拖拽到軟件窗口。
  2. 智能識(shí)別列名:導(dǎo)入文件后,程序會(huì)自動(dòng)讀取 Excel 的表頭,并生成下拉列表供你選擇,再也不用擔(dān)心手動(dòng)輸入列名打錯(cuò)字了。
  3. 強(qiáng)大的六大操作
    • 全部替換:將整列數(shù)據(jù)替換為統(tǒng)一的新值。
    • 頭部/尾部添加:批量給文本添加前綴或后綴。
    • 字符分割(多列/保留單列):支持按指定字符將一列拆分成多列,或者只提取你需要的那部分。
    • 數(shù)值統(tǒng)一加減:一鍵對(duì)數(shù)值列進(jìn)行加減運(yùn)算。
  4. 多規(guī)則流水線:可以在一次任務(wù)中添加多條規(guī)則(比如先給A列加前綴,再把B列拆分),程序會(huì)按順序一次性處理完畢。
  5. 安全可靠:處理后的文件會(huì)自動(dòng)另存為 原文件名_已處理.xlsx,絕不覆蓋你的原始數(shù)據(jù)!

核心代碼拆解

這款工具的界面是使用 PyQt5 編寫的,而底層的表格處理則是大名鼎鼎的數(shù)據(jù)分析庫(kù) Pandas。我們來看看幾個(gè)關(guān)鍵的技術(shù)點(diǎn):

1. 動(dòng)態(tài)讀取 Excel 列名

為了讓用戶能直接從下拉菜單中選擇列名,我們需要在用戶拖入文件后,迅速讀取 Excel 的表頭。這里我們用到了 pandas 的一個(gè)小技巧:設(shè)置 nrows=0,這樣 pandas 只會(huì)讀取表頭,不會(huì)加載海量的數(shù)據(jù),速度極快!

def update_columns(self):
    """更新列名下拉列表"""
    self.column_combo.clear()
    if not self.files:
        return
        
    try:
        # 讀取第一個(gè)文件的表頭作為參考,nrows=0 大幅提升讀取速度
        file_path = self.files[0]
        header_row = self.header_spin.value()
        df = pd.read_excel(file_path, header=header_row - 1, nrows=0)
        columns = df.columns.tolist()
        self.column_combo.addItems([str(col) for col in columns])
    except Exception as e:
        self.status_label.setText(f"讀取列名失敗: {str(e)}")

2. 使用 QThread 避免界面卡頓

處理大體積的 Excel 文件或者同時(shí)處理數(shù)十個(gè)文件時(shí),如果在主線程里執(zhí)行,軟件界面就會(huì)“假死”(未響應(yīng))。所以我們繼承 QThread 編寫了一個(gè) ProcessThread,把耗時(shí)的處理工作放到后臺(tái)線程。

class ProcessThread(QThread):
    progress = pyqtSignal(str)
    finished = pyqtSignal(bool, str)
    
    def __init__(self, files, header_row, rules):
        super().__init__()
        self.files = files
        self.header_row = header_row
        self.rules = rules
    
    def run(self):
        try:
            success_count = 0
            for file_path in self.files:
                self.progress.emit(f"正在處理: {os.path.basename(file_path)}")
                if self.process_file(file_path):
                    success_count += 1
            
            self.finished.emit(True, f"處理完成!成功處理 {success_count}/{len(self.files)} 個(gè)文件")
        except Exception as e:
            self.finished.emit(False, f"處理出錯(cuò): {str(e)}")

3. Pandas 數(shù)據(jù)處理核心邏輯

核心的數(shù)據(jù)處理部分全靠 Pandas。我們遍歷用戶設(shè)定的規(guī)則列表 self.rules,針對(duì)不同的操作類型,調(diào)用相應(yīng)的 Pandas API。比如字符串拼接、str.split 拆分列,以及 pd.to_numeric 進(jìn)行數(shù)值計(jì)算:

def process_file(self, file_path):
    df = pd.read_excel(file_path, header=self.header_row - 1)
    
    for rule in self.rules:
        column_name = rule.get('column')
        operation = rule.get('operation')
        params = rule.get('params', {})
        
        if operation == "頭部添加":
            prefix = params.get('prefix', '')
            df[column_name] = prefix + df[column_name].astype(str)
            
        elif operation == "以字符分割成多列":
            delimiter = params.get('delimiter', ',')
            # expand=True 會(huì)直接返回一個(gè) DataFrame
            split_data = df[column_name].astype(str).str.split(delimiter, expand=True)
            df = df.drop(columns=[column_name])
            col_index = df.columns.tolist().index(column_name) if column_name in df.columns else len(df.columns)
            for i, col in enumerate(split_data.columns):
                df.insert(col_index + i, f"{column_name}_分割{i+1}", split_data[col])
                
        elif operation == "數(shù)值統(tǒng)一加減":
            add_value = params.get('add_value', 0)
            df[column_name] = pd.to_numeric(df[column_name], errors='coerce') + add_value
            
    # 安全保存文件
    base_name, ext = os.path.splitext(file_path)
    output_path = f"{base_name}_已處理{ext}"
    df.to_excel(output_path, index=False)
    return True

打包為 EXE 分享給同事

寫好代碼后,為了讓沒有安裝 Python 環(huán)境的同事也能使用,我們可以使用 PyInstaller 將它打包成一個(gè)獨(dú)立的 EXE 可執(zhí)行文件。

只需在命令行中運(yùn)行以下命令:

pyinstaller --noconfirm --onefile --windowed --icon "修改.ico" --add-data "修改.png;." --name "Excel批量列處理工具" excel_editor.py
  • --onefile:打包成單一文件
  • --windowed:運(yùn)行時(shí)不顯示黑乎乎的控制臺(tái)黑框
  • --icon--add-data:給軟件加上好看的圖標(biāo)

打包完成后,在 dist 目錄下就會(huì)生成一個(gè) Excel批量列處理工具.exe,直接雙擊就能愉快地使用了!

結(jié)語

借助 Python 和 Pandas 強(qiáng)大的數(shù)據(jù)處理能力,再搭配 PyQt5 的圖形化界面,我們輕松就把繁瑣的 Excel 處理工作變成了一鍵式的傻瓜工具。不僅自己用著爽,發(fā)給身邊的同事,絕對(duì)能讓你收獲滿滿的贊譽(yù)!

到此這篇關(guān)于Python+PyQt5打造一個(gè)Excel批量列處理工具的文章就介紹到這了,更多相關(guān)Python Excel批量列處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)將單張或多張圖片轉(zhuǎn)PDF

    Python實(shí)現(xiàn)將單張或多張圖片轉(zhuǎn)PDF

    這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)將單張或多張圖片轉(zhuǎn)PDF,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-11-11
  • python GUI庫(kù)圖形界面開發(fā)之PyQt5窗口背景與不規(guī)則窗口實(shí)例

    python GUI庫(kù)圖形界面開發(fā)之PyQt5窗口背景與不規(guī)則窗口實(shí)例

    這篇文章主要介紹了python GUI庫(kù)圖形界面開發(fā)之PyQt5窗口背景與不規(guī)則窗口實(shí)例,需要的朋友可以參考下
    2020-02-02
  • Python中matplotlib中文亂碼解決辦法

    Python中matplotlib中文亂碼解決辦法

    Matplotlib是Python的一個(gè)很好的繪圖包,但是其本身并不支持中文(貌似其默認(rèn)配置中沒有中文字體),所以如果繪圖中出現(xiàn)了中文,就會(huì)出現(xiàn)亂碼
    2017-05-05
  • numpy中的delete刪除數(shù)組整行和整列的實(shí)例

    numpy中的delete刪除數(shù)組整行和整列的實(shí)例

    今天小編就為大家分享一篇numpy中的delete刪除數(shù)組整行和整列的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 基于Python實(shí)現(xiàn)主機(jī)遠(yuǎn)程控制

    基于Python實(shí)現(xiàn)主機(jī)遠(yuǎn)程控制

    這篇文章主要介紹了基于Python實(shí)現(xiàn)主機(jī)遠(yuǎn)程控制,本文為?HITwh?網(wǎng)絡(luò)空間安全專業(yè)網(wǎng)絡(luò)空間安全設(shè)計(jì)與實(shí)踐選題,主要實(shí)現(xiàn)了遠(yuǎn)程監(jiān)控局域網(wǎng)內(nèi)的主機(jī)桌面與網(wǎng)絡(luò)情況、簡(jiǎn)單鍵鼠控制、遠(yuǎn)程斷網(wǎng)(ARP?攻擊)、數(shù)據(jù)加密傳輸?shù)裙δ埽旅鎭砜纯淳唧w實(shí)現(xiàn)過程吧
    2022-01-01
  • 手把手教你使用Python解決簡(jiǎn)單的zip文件解壓密碼

    手把手教你使用Python解決簡(jiǎn)單的zip文件解壓密碼

    本文主要介紹了Python解決簡(jiǎn)單的zip文件解壓密碼,使用的核心模塊是python標(biāo)準(zhǔn)庫(kù)中的zipfile模塊。具有一定的參考價(jià)值,感興趣的可以了解一下
    2021-11-11
  • python畫蝴蝶曲線圖的實(shí)例

    python畫蝴蝶曲線圖的實(shí)例

    今天小編就為大家分享一篇python畫蝴蝶曲線圖的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • GCN?圖神經(jīng)網(wǎng)絡(luò)使用詳解?可視化?Pytorch

    GCN?圖神經(jīng)網(wǎng)絡(luò)使用詳解?可視化?Pytorch

    這篇文章主要介紹了GCN?圖神經(jīng)網(wǎng)絡(luò)使用詳解?可視化?Pytorch,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Pycharm不同版本鏡像源添加方法

    Pycharm不同版本鏡像源添加方法

    本文主要介紹了Pycharm不同版本鏡像源添加方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Python 實(shí)現(xiàn)鍵盤鼠標(biāo)按鍵模擬

    Python 實(shí)現(xiàn)鍵盤鼠標(biāo)按鍵模擬

    這篇文章主要介紹了Python 實(shí)現(xiàn)鍵盤按鍵模擬的方法,幫助大家提高辦公效率,感興趣的朋友可以了解下
    2020-11-11

最新評(píng)論

石柱| 铜山县| 中江县| 泰兴市| 嘉兴市| 肥东县| 新民市| 特克斯县| 逊克县| 富蕴县| 达尔| 青海省| 奉贤区| 思南县| 淳化县| 张家港市| 安吉县| 绵阳市| 呼伦贝尔市| 炉霍县| 武义县| 涟源市| 德兴市| 鹿邑县| 东源县| 夹江县| 韶山市| 苏尼特右旗| 伊金霍洛旗| 若尔盖县| 纳雍县| 澳门| 新蔡县| 惠水县| 大方县| 扶余县| 东丰县| 太保市| 青海省| 北海市| 通榆县|