溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么在Python中對(duì)格式一致的Excel文件進(jìn)行合并

發(fā)布時(shí)間:2021-03-22 17:47:29 來(lái)源:億速云 閱讀:319 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

怎么在Python中對(duì)格式一致的Excel文件進(jìn)行合并?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

一 問(wèn)題描述

最近朋友在工作中遇到這樣一個(gè)問(wèn)題,她每天都要處理如下一批 Excel 表格:每個(gè)表格的都只有一個(gè) sheet,表格的前兩行為表格標(biāo)題及表頭,表格的最后一行是相關(guān)人員簽字。最終目標(biāo)是將每個(gè)表格的內(nèi)容合并到一個(gè) Excel 表格中,使之成為一張表格。在她未咨詢(xún)我之前,每天復(fù)制粘貼這一類(lèi)操作占用了她絕大部分時(shí)間。表格樣式如下:

怎么在Python中對(duì)格式一致的Excel文件進(jìn)行合并

二 需求分析

根據(jù)她的描述,最終需求應(yīng)該是這樣的:在這一批表格中選取任意一個(gè)表格的前兩行作為新表格的標(biāo)題與表頭,將這兩行內(nèi)容以嵌套列表的形式插入一個(gè)名為 data 空列表中。取每張表格的第3至倒數(shù)第二行,剔除空白行的內(nèi)容。并將所有表格的內(nèi)容以子列表的方式依次插入 data 列表中。任取一表格的最后一行以子列表的方式插入 data 列表中。最后將 data 列表的內(nèi)容寫(xiě)入一個(gè)新的 Excel 表格中。

三 查閱資料

通過(guò)幾分鐘的上網(wǎng)查詢(xún),得出以下結(jié)論:

3.1 通過(guò) xlrd 和 xlsxwriter 模塊即可解決次需求;

3.2 之所以使用 xlrd 和 xlsxwriter 是因?yàn)椋?xlrd擅長(zhǎng)讀取 Excel 文件,不適合寫(xiě)入,用 xlsxwriter 來(lái)進(jìn)行大規(guī)模寫(xiě)入 Excel 表格不會(huì)出現(xiàn)報(bào)錯(cuò)。

四 編碼

一切以解決當(dāng)前問(wèn)題為向?qū)?,說(shuō)干就干。 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 = "油站經(jīng)理" # 除包括此關(guān)鍵字的行均插入
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()

看完上述內(nèi)容,你們掌握怎么在Python中對(duì)格式一致的Excel文件進(jìn)行合并的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI