日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 合并excel 自动更新_手把手教你4种方法用Python批量实现多Excel多Sheet合并

發(fā)布時間:2023/12/10 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 合并excel 自动更新_手把手教你4种方法用Python批量实现多Excel多Sheet合并 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、前言

大家好,我是崔艷飛。前兩天給大家分享了Python自動化文章:手把手教你利用Python輕松拆分Excel為多個CSV文件,而后在Python進階交流群里邊有讀者遇到一個問題,他有很多個Excel表格,他需要對這些Excel文件進行合并。

誠然,一個一個打開復(fù)制粘貼固然可行,但是該方法費時費力,還容易出錯,幾個文件還可以手動處理,要是幾十個甚至上百個,你就抓瞎了,不過這問題對Python來說,so easy,一起來看看吧!

二、項目目標

用Python實現(xiàn)多Excel、多Sheet的合并處理。

三、項目準備

軟件:PyCharm

需要的庫:pandas, xlrd,os

四、項目分析

1)如何選擇要合并的Excel文件?

利用os,獲取所有要合并的Excel文件。

2)如何選擇要合并的Sheet?

利用xlrd庫進行Excel讀取,獲取要合并的Sheet名。

3)如何合并?

利用pandas庫,對所有Sheet名逐一循環(huán)打開,通過concat()進行數(shù)據(jù)追加合并即可。

4)如何保存文件?

利用to_excel保存數(shù)據(jù),得到最終合并后的目標文件。

五、項目實現(xiàn)

1、第一步導(dǎo)入需要的庫

import?pandasaspd

import?xlrd

import?os

2、第二步選擇要合并的Excel文件

#要合并文件路徑

path="D:/b/"

#獲取文件夾下所有EXCEL名

xlsx_names?=?[x?forxinos.listdir(path)?if?x.endswith(".xlsx")]

3、第三步選擇要合并的Sheet

#?獲取第一個EXCEL名

xlsx_names1?=?xlsx_names[0]

aa?=?path?+?xlsx_names1

#打開第一個EXCEL

first_file_fh=xlrd.open_workbook(aa)

#?獲取SHEET名

first_file_sheet=first_file_fh.sheets()

4、第四步對Sheet內(nèi)容進行循環(huán)合并

#按SHEET名循環(huán)

forsheet_nameinsheet_names:

df?=?None

#?按EXCEL名循環(huán)

forxlsx_nameinxlsx_names:

sheet_na?=?pd.ExcelFile(path?+?xlsx_name).sheet_names

if?sheet_name?insheet_na:

#print(sheet_name)

_df?=?pd.read_excel(path?+?xlsx_name,?sheet_name=sheet_name,header=None)

if?df?isNone:

df?=?_df

else:

df?=?pd.concat([df,?_df],?ignore_index=True)

else:continue

5、第五步保存合并后的文件

df.to_excel(excel_writer=writer,?sheet_name=sheet_name,?encoding="utf-8",index=False)

print(sheet_name?+?"??保存成功!共%d個,第%d個。"%?(len(sheet_names),num))

num?+=?1

writer.save()

writer.close()

六、效果展示

1、處理前Excel數(shù)據(jù):

2、運行進度提示:

3、合并后的結(jié)果:

七、總結(jié)

本文介紹了如何利用Python對多個Excel文件、多Sheet進行合并處理,減少了很多復(fù)制粘貼的麻煩,省時省力,還不容易出錯,代碼不多,循環(huán)追加有點繞,想想也就明白了,不懂的隨時留言提問,大家一起學(xué)習(xí)進步。

有想法的小伙伴還可以將文章中的代碼進行打包,做成一個exe可執(zhí)行的小軟件,包裝好發(fā)給別人使用,也可以賺點小費噢,關(guān)于打包的教程這里不再贅述,歡迎前往:三個你必須要記住的Pyinstaller打包命令——利用Python實現(xiàn)打包exe。

八、彩蛋

下面兩份代碼是群內(nèi)小伙伴提供了,小編也自行測試了下,親測有效,歡迎大家積極嘗試噢!

來自群友Jayson的代碼:

#?-*-?coding:?utf-8?-*-

#?@Author:?hebe

#?@Date:???2020-04-18?18:31:03

#?@LastModifiedby:???hebe

#?@LastModifiedtime:?2020-04-18?19:40:48

import?os

import?glob

import?openpyxl

def?merge_xlsx_files(xlsx_files):

wb?=?openpyxl.load_workbook(xlsx_files[0])

ws?=?wb.active

ws.title?=?"merged?result"

forfilenameinxlsx_files[1:]:

workbook?=?openpyxl.load_workbook(filename)

sheet?=?workbook.active

forrowinsheet.iter_rows(min_row=1):

values=?[cell.valueforcellinrow]

ws.append(values)

returnwb

#path?isvery?important?here?,?musttrue.

def?get_all_xlsx_files(path):

xlsx_files?=?glob.glob(os.path.join(r'C:\\Users\\pdcfi\\Desktop\\',?'*.xlsx'))

sorted(xlsx_files,?key=str.lower)

returnxlsx_files

def?main():

xlsx_files?=?get_all_xlsx_files(os.path.expanduser('~lmx'))

wb?=?merge_xlsx_files(xlsx_files)

wb.save('merged_form.xlsx')

if?__name__?==?'__main__':

main()

print("all?excel?append?OK!")

來自好友劉早起的代碼:

#?-*-?coding:?utf-8?-*-

fromopenpyxl?import?load_workbook,?Workbook

import?glob

path?=?"C:\\Users\\pdcfi\\Desktop\\excel\\"

new_workbook?=?Workbook()

new_sheet?=?new_workbook.active

#?用flag變量明確新表是否已經(jīng)添加了表頭,只要添加過一次就無須重復(fù)再添加

flag?=?0

forfileinglob.glob(path?+'/*.xlsx'):

workbook?=?load_workbook(file)

sheet?=?workbook.active

coloum_A?=?sheet['A']

row_lst?=?[]

forcellincoloum_A:

if?cell:

print(cell.row)

row_lst.append(cell.row)

if?notflag:

header?=?sheet[1]

header_lst?=?[]

forcellinheader:

header_lst.append(cell.value)

new_sheet.append(header_lst)

flag?=?1

forrowinrow_lst:

data_lst?=?[]

forcellinsheet[row]:

data_lst.append(cell.value)

new_sheet.append(data_lst)

new_workbook.save(path?+?'/'+'符合篩選條件的新表.xlsx')

來自群友Engineer的代碼:

import?tkinterastk

fromtkinter?import?filedialog

import?os

import?pandas?aspd

import?glob

root?=?tk.Tk()

root.withdraw()

#?選擇文件夾位置

filelocation?=?os.path.normpath(filedialog.askdirectory(initialdir=os.getcwd()))

lst?=?[]

#?讀取文件夾下所有文件(xls和xlsx都讀取)

foriinglob.glob(filelocation?+"\\\\"?+?"*.*"):

if?os.path.splitext(i)[1]?in[".xls",".xlsx"]:

lst.append(pd.read_excel(i))

#?保存合并后的excel文件

writer?=?pd.ExcelWriter(filedialog.asksaveasfilename(title="保存",?initialdir=filelocation,?defaultextension="xlsx",

filetypes=[("Excel?工作簿","*.xlsx"),

("Excel?97-2003?工作簿","*.xls")]))

pd.concat(lst).to_excel(writer,?'all',index=False)

writer.save()

print('\n%d個文件已經(jīng)合并成功!'%?len(lst))

當然了,實現(xiàn)本文功能不僅僅限于上面提及的3種方式,使用pandas也是可以做到的,如果你還有其他方法,歡迎交個朋友一起學(xué)習(xí)交流!

【編輯推薦】

【責(zé)任編輯:姜華 TEL:(010)68476606】

點贊 0

總結(jié)

以上是生活随笔為你收集整理的python 合并excel 自动更新_手把手教你4种方法用Python批量实现多Excel多Sheet合并的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。