1. 程式人生 > 程式設計 >使用 Python 合併多個格式一致的 Excel 檔案(推薦)

使用 Python 合併多個格式一致的 Excel 檔案(推薦)

一 問題描述

最近朋友在工作中遇到這樣一個問題,她每天都要處理如下一批 Excel 表格:每個表格的都只有一個 sheet,表格的前兩行為表格標題及表頭,表格的最後一行是相關人員簽字。最終目標是將每個表格的內容合併到一個 Excel 表格中,使之成為一張表格。在她未諮詢我之前,每天覆制貼上這一類操作佔用了她絕大部分時間。表格樣式如下:

二 需求分析

根據她的描述,最終需求應該是這樣的:在這一批表格中選取任意一個表格的前兩行作為新表格的標題與表頭,將這兩行內容以巢狀列表的形式插入一個名為 data 空列表中。取每張表格的第3至倒數第二行,剔除空白行的內容。並將所有表格的內容以子列表的方式依次插入 data 列表中。任取一表格的最後一行以子列表的方式插入 data 列表中。最後將 data 列表的內容寫入一個新的 Excel 表格中。

三 查閱資料

通過幾分鐘的上網查詢,得出以下結論:

3.1 通過 xlrd 和 xlsxwriter 模組即可解決次需求;

3.2 之所以使用 xlrd 和 xlsxwriter 是因為: xlrd擅長讀取 Excel 檔案,不適合寫入,用 xlsxwriter 來進行大規模寫入 Excel 表格不會出現報錯。

四 編碼

一切以解決當前問題為嚮導,說幹就幹。 coding … …

# -*- coding:utf-8 -*-
import os,xlrd,xlsxwriter
source_dir = r'input'
new_execl = "All in one.xlsx"
raw_excels = os.listdir(source_dir)
keyword = "油站經理" # 除包括此關鍵字的行均插入
data = []
filename = os.path.join(source_dir,raw_excels[0])
wb = xlrd.open_workbook(filename)
sheet = wb.sheets()[0]
data.append(sheet.row_values(0))
data.append(sheet.row_values(1))
for excel in raw_excels:
 filename = os.path.join(source_dir,excel)
 wb = xlrd.open_workbook(filename)
 sheet = wb.sheets()[0]
 for row_num in range(2,sheet.nrows):
  row_values = [str(i) for i in sheet.row_values(row_num)]
  if len(''.join(row_values)) and (keyword not in ''.join(row_values)):
   data.append(sheet.row_values(row_num))
data.append(sheet.row_values(sheet.nrows-1))
new_wb = xlsxwriter.Workbook(new_execl)
worksheet = new_wb.add_worksheet()
font = new_wb.add_format({"font_size":11})
for i in range(len(data)):
 for j in range(len(data[i])):
  worksheet.write(i,j,data[i][j],font)
new_wb.close()

半小時後,大功告成!

五 使用說明

5.1 下載安裝 Python3.X(具體安裝步驟自己查一下);

5.2 安裝 xlrd 和 xlsxwriter 模組,參考命令: pip install xlrd xlsxwriter。開始此步驟之前可能需要先升級pip,具體升級命令系統會提示,複製貼上即可;

5.3 新建一個名為 input 的資料夾,將需要合併的檔案複製到這個資料夾下;

5.4 把以上程式碼複製以 excels_merge.py 的檔名儲存在與 input 資料夾同級別的資料夾中,雙擊滑鼠稍後即可。如果沒有關聯開啟方式,那麼就在資源管理器的位址列輸入“cmd”,在開啟的命令視窗輸入:python excels_merge.py。生成的 All in one.xlsx 即為合併後的新 Excel 檔案。

六 總結

6.1 [str(i) for i in sheet.row_values(row_num)]這一部分程式碼實現了將列表內的元素統一轉化為字串,主要是為了下一行程式碼實現將列表轉換為字串;

6.3 此的指令碼不對源 Excel 檔案進行任何操作,可是放心使用;

6.4 以上指令碼就是隨手一寫,都沒有優化,以後如果資料量太大估計會考慮優化,希望大家多提意見或建議;

6.5 原始碼可以訪問我的同名 CSDN 部落格及 GitHub 獲取。

總結

以上所述是小編給大家介紹的使用 Python 合併多個格式一致的 Excel 檔案,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對我們網站的支援!如果你覺得本文對你有幫助,歡迎轉載,煩請註明出處,謝謝!