python 按照sheet合并多個(gè)Excel的示例代碼(多個(gè)sheet)
工作中會(huì)遇到這樣的需求,有多個(gè)Excel的格式一樣,都有多個(gè)sheet,且每個(gè)sheet的名字和格式一樣,我們需要按照sheet 合并,就是說(shuō)合并后的表的格式和合并錢的格式是一樣的。A、B、C表格式如圖


現(xiàn)在需要合并成下圖:


我這次處理是保留第一個(gè)表的首行,其余的表的首行都不保留。因此結(jié)果會(huì)和上面有所不同,上面的是將所有的首行都保存
import xlrd,xlsxwriter
#待合并excel
allxls=["C:/xxx/xxx.xlsx",
"C:/xxx/xxx.xlsx"]
#目標(biāo)excel
end_xls="C:/xxx/merge.xlsx"
def open_xls(file):
try:
fh=xlrd.open_workbook(file)
return fh
except Exception as e:
print("打開(kāi)文件錯(cuò)誤:"+e)
#根據(jù)excel名以及第幾個(gè)標(biāo)簽信息就可以得到具體標(biāo)簽的內(nèi)容
def get_file_value(filename,sheetnum):
rvalue=[]
fh=open_xls(filename)
sheet=fh.sheets()[sheetnum]
row_num=sheet.nrows
for rownum in range(0,row_num):
rvalue.append(sheet.row_values(rownum))
return rvalue
def get_file_value_1(filename,sheetnum):
rvalue=[]
fh=open_xls(filename)
sheet=fh.sheets()[sheetnum]
row_num=sheet.nrows
for rownum in range(1,row_num):
rvalue.append(sheet.row_values(rownum))
return rvalue
#獲取第一個(gè)excel的sheet個(gè)數(shù)以及名字作為標(biāo)準(zhǔn)
first_file_fh=open_xls(allxls[0])
first_file_sheet=first_file_fh.sheets()
first_file_sheet_num=len(first_file_sheet)
sheet_name=[]
for sheetname in first_file_sheet:
sheet_name.append(sheetname.name)
#定義一個(gè)目標(biāo)excel
endxls=xlsxwriter.Workbook(end_xls)
all_sheet_value=[]
#把所有內(nèi)容都放到列表all_sheet_value中
for sheet_num in range(0,first_file_sheet_num):
all_sheet_value.append([])
for i,file_name in enumerate(allxls):
if i==0:
print("正在讀取"+file_name+"的第"+str(sheet_num+1)+"個(gè)標(biāo)簽...")
file_value=get_file_value(file_name,sheet_num)
all_sheet_value[sheet_num].append(file_value)
else:
print("正在讀取"+file_name+"的第"+str(sheet_num+1)+"個(gè)標(biāo)簽...")
file_value=get_file_value_1(file_name,sheet_num)
all_sheet_value[sheet_num].append(file_value)
#print(all_sheet_value)
num=-1
sheet_index=-1
#將列表all_sheet_value的內(nèi)容寫入目標(biāo)excel
for sheet in all_sheet_value:
sheet_index+=1
end_xls_sheet=endxls.add_worksheet(sheet_name[sheet_index])
num+=1
num1=-1
for sheet1 in sheet:
for sheet2 in sheet1:
num1+=1
num2=-1
for sheet3 in sheet2:
num2+=1
#print(num,num1,num2,sheet3)
#在第num1行的第num2列寫入sheet3的內(nèi)容
end_xls_sheet.write(num1,num2,sheet3)
endxls.close()
到此這篇關(guān)于python 按照sheet合并多個(gè)Excel的示例代碼(多個(gè)sheet)的文章就介紹到這了,更多相關(guān)python 合并多個(gè)excel內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python新手入門之單引號(hào)、雙引號(hào)與三引號(hào)的差異與應(yīng)用示例
在Python當(dāng)中表達(dá)字符串既可以使用單引號(hào),也可以使用雙引號(hào),那兩者有什么區(qū)別嗎?下面這篇文章主要給大家介紹了關(guān)于Python新手入門之單引號(hào)、雙引號(hào)與三引號(hào)的差異與應(yīng)用示例,需要的朋友可以參考下2024-03-03
Python自動(dòng)化測(cè)試基礎(chǔ)必備知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家分享的是一篇關(guān)于Python自動(dòng)化測(cè)試基礎(chǔ)必備知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。2021-02-02
python基于pexpect庫(kù)自動(dòng)獲取日志信息
這篇文章主要介紹了python基于pexpect庫(kù)自動(dòng)獲取日志信息的方法,幫助大家更好的利用python高效辦公,感興趣的朋友可以了解下2021-02-02
python實(shí)戰(zhàn)之德州撲克第二步-判斷牌型
這篇文章主要介紹了python實(shí)戰(zhàn)之德州撲克第二步-判斷牌型,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04
flask之郵件發(fā)送的實(shí)現(xiàn)示例
Flask-Mail是一個(gè)處理電子郵件發(fā)送的擴(kuò)展,它提供了簡(jiǎn)單且易于使用的API,可以方便地發(fā)送電子郵件,本文就來(lái)介紹一下flask之郵件發(fā)送的實(shí)現(xiàn)示例,感興趣的可以了解一下2023-12-12
Linux下使用python腳本執(zhí)行BCP導(dǎo)入導(dǎo)出方式
這篇文章主要介紹了Linux下使用python腳本執(zhí)行BCP導(dǎo)入導(dǎo)出方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
解決nohup重定向python輸出到文件不成功的問(wèn)題
今天小編就為大家分享一篇解決nohup重定向python輸出到文件不成功的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
python3實(shí)現(xiàn)163郵箱SMTP發(fā)送郵件
這篇文章主要為大家詳細(xì)介紹了Python3實(shí)現(xiàn)163郵箱SMTP發(fā)送郵件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05

