前幾天遇見這么一個問題,手上有很多張表格,這些表格中都只有一個 sheet,需要把這些表匯總到一張表。
一張表中有多個 sheet,每一個 sheet 的名稱是每張表格的文件名。
如果手動合並,往往需要花不少時間。如有 100 張表格的話,那樣效率就太低了,於是弄了一個腳本來完成這個任務。
我找了一些測試數據,放在了 abc 文件夾下,abc 隨便取的,只是一個保存數據的文件夾而已,在這個文件夾中只保存表格數據,其他的不要保存:
然后需要把這些表格數據合並為同一張表格,里面有多個 sheet,每一個 sheet 的數據為每一張表的數據且命名為原始數據表的名稱。
代碼如下:
'''
學習中遇到問題沒人解答?小編創建了一個Python學習交流群:857662006
尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書!
'''
import pandas as pd
import os
result = pd.ExcelWriter('result.xlsx') #結果保存路徑
origin_file_list = os.listdir(r'./abc') #獲取表格路徑
for i in origin_file_list:
file_path = r'./abc/%s' % i #拼接文件路徑
content = pd.read_excel(file_path) #讀取文件內容
sheet_name = i[:len(i)-4] #獲取文件名
content.to_excel(result, sheet_name, index=False) # 寫入同一個表的不同sheet
result.save()
上面的代碼比較容易看懂,都有注釋。先設置輸出結果文件路徑及名稱,再獲得數據源的所在的路徑下的所有數據表的表名,循環讀取每一個文件,設置 sheet 名字,設置為多個 sheet,最后保存。
運行后得到 result.xlsx 文件:
打開查看結果,可以看到有多個 sheet,且每一張 sheet 的名稱都為原始數據表的名稱:
到這里,這一個小需求就完成了。
注意:自己測試的時候,表格第一列第一行不能為空,否則會報錯。
學‘廢’了嗎?