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

Python合并Excel文件的兩種實用方案詳解

 更新時間:2026年03月23日 15:19:04   作者:咕白m625  
作為每天和 Excel 打交道的打工人,最煩的莫過于處理一堆零散的 Excel 文件,下面小編就和大家詳細(xì)介紹一下使用Python合并Excel文件的兩種實用方案,希望對大家有所幫助

作為每天和 Excel 打交道的打工人,最煩的莫過于處理一堆零散的 Excel 文件。比如每周各門店報上來的銷售表、各部門提交的費用明細(xì),要把這些文件合并成一個總表,手動打開、復(fù)制、粘貼不僅費時間,還容易漏行、錯行,尤其是遇到帶合并單元格、公式的表格,簡直是噩夢。

之前我用 pandas 處理過,但 pandas 對 Excel 的格式支持不算友好,合并后經(jīng)常丟格式、公式失效;后來試了 Free Spire.XLS for Python 免費庫,發(fā)現(xiàn)它對 Excel 原生格式的支持特別好,合并后的表格能完整保留原有的樣式、公式和合并單元格,今天就把這個超實用的方法分享給大家。

方案概述

Free Spire.XLS for Python 是一個無需安裝 Microsoft Excel 即可讀寫 Excel 文件的純 Python 庫,免費版可滿足多數(shù)日常合并需求。本文針對兩種常見場景給出具體實現(xiàn):

  • 獨立工作表模式:將每個源文件的所有工作表作為一個獨立的工作表添加到合并后的工作簿中,適合需要區(qū)分來源文件的場景。
  • 追加模式:將所有源文件的數(shù)據(jù)依次追加到合并工作簿的同一工作表中,適合匯總同類數(shù)據(jù)的場景。

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

確保 Python 3.7 及以上版本已安裝,并執(zhí)行以下命令安裝依賴庫:

pip install Spire.Xls.Free

注意:免費版在讀寫 .xls 格式的 Excel 文檔時,有每個文檔 5 個工作表,每個工作表 200 行的限制。

模式一:每個文件獨立成表

此模式適用于需要保留各文件原始結(jié)構(gòu)、工作表互不干擾的場景。例如,合并不同部門或區(qū)域的報表,便于按來源查閱。

代碼實現(xiàn)

import os
from spire.xls import *

# 待合并文件所在的文件夾路徑
input_folder = './sample_files'
# 合并后的輸出文件名
output_file = 'merged_workbook.xlsx'

# 初始化合并工作簿變量
merged_workbook = None

# 遍歷文件夾中的所有文件
for filename in os.listdir(input_folder):
    # 僅處理 Excel 文件(.xlsx 或 .xls)
    if filename.endswith('.xlsx') or filename.endswith('.xls'):
        file_path = os.path.join(input_folder, filename)

        # 加載當(dāng)前文件
        source_workbook = Workbook()
        source_workbook.LoadFromFile(file_path)

        if merged_workbook is None:
            # 第一個文件作為合并工作簿的基座
            merged_workbook = source_workbook
        else:
            # 將后續(xù)文件的每個工作表復(fù)制到合并工作簿
            for i in range(source_workbook.Worksheets.Count):
                sheet = source_workbook.Worksheets.get_Item(i)
                merged_workbook.Worksheets.AddCopy(sheet, WorksheetCopyType.CopyAll)

# 保存合并后的工作簿
merged_workbook.SaveToFile(output_file, ExcelVersion.Version2016)

說明

  • 第一個文件直接拿來當(dāng)“母板”,這樣能保留第一個文件原來的工作表順序。
  • AddCopy(sheet, WorksheetCopyType.CopyAll) 復(fù)制工作表,可以連格式、合并單元格、圖表一起搬過來,省心。
  • 工作表名字自動生成為“原文件名_原工作表名”,避免重名。如果你覺得名字太長,可以自己改一下拼接規(guī)則。

模式二:所有數(shù)據(jù)合并到同一工作表

此模式適用于將多個結(jié)構(gòu)相同的數(shù)據(jù)表匯總為一張總表,例如按月合并銷售明細(xì)。假設(shè)每個文件的第一行為表頭,后續(xù)文件只追加數(shù)據(jù)行。

代碼實現(xiàn)

import os
from spire.xls import *

# 待合并文件所在的文件夾路徑
input_folder = './excel_worksheets'
# 合并后的輸出文件名
output_file = 'merged_into_one_sheet.xlsx'

# 創(chuàng)建新的工作簿作為合并目標(biāo)
merged_workbook = Workbook()
# 使用第一個工作表作為數(shù)據(jù)匯總表
merged_sheet = merged_workbook.Worksheets[0]

# 當(dāng)前寫入行號(從1開始)
current_row = 1

# 遍歷文件夾中的所有文件
for filename in os.listdir(input_folder):
    if filename.endswith('.xlsx') or filename.endswith('.xls'):
        file_path = os.path.join(input_folder, filename)

        # 加載當(dāng)前文件
        workbook = Workbook()
        workbook.LoadFromFile(file_path)

        # 獲取第一個工作表
        sheet = workbook.Worksheets[0]

        # 獲取已使用區(qū)域
        source_range = sheet.Range

        # 在合并表中定位目標(biāo)起始單元格
        dest_range = merged_sheet.Range[current_row, 1]

        # 復(fù)制數(shù)據(jù)
        source_range.Copy(dest_range)

        # 更新當(dāng)前行號,指向下一段數(shù)據(jù)的起始位置
        current_row += sheet.LastRow

# 保存合并后的工作簿
merged_workbook.SaveToFile(output_file, ExcelVersion.Version2016)

注意點

  • 僅復(fù)制數(shù)據(jù):使用 Range.Copy 方法主要復(fù)制值和公式。
  • 行號管理:通過累加 sheet.LastRow 確定下一段數(shù)據(jù)的起始行,保證數(shù)據(jù)連續(xù)追加。
  • 表頭處理:上述代碼中,第一個文件的表頭會被保留,后續(xù)文件的表頭因從第 1 行開始復(fù)制(源表第一行),會一并復(fù)制,導(dǎo)致重復(fù)表頭。若希望只保留一個表頭,可將后續(xù)文件復(fù)制時的起始行改為第 2 行(即 source_range = sheet.Range[2, 1])。

本文提供了兩種常見 Excel 合并場景的完整 Python 實現(xiàn),無需安裝 Excel 應(yīng)用程序即可運行。通過將重復(fù)性工作自動化,可有效提升數(shù)據(jù)處理效率,減少人為錯誤。使用時可根據(jù)實際需求選擇或調(diào)整代碼,將其集成到日常工作中。

到此這篇關(guān)于Python合并Excel文件的兩種實用方案詳解的文章就介紹到這了,更多相關(guān)Python合并Excel內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

皋兰县| 古交市| 昔阳县| 团风县| 罗源县| 马鞍山市| 鹰潭市| 江都市| 眉山市| 富裕县| 贺兰县| 兴安县| 汝城县| 和田市| 肥城市| 永福县| 舟山市| 迁安市| 新民市| 财经| 陆良县| 建昌县| 锡林浩特市| 洞口县| 自治县| 清河县| 三明市| 竹溪县| 陇川县| 安徽省| 遂平县| 新乐市| 临高县| 和田县| 尼木县| 云龙县| 东乡族自治县| 平定县| 新巴尔虎右旗| 安达市| 湛江市|