時間:2019.02.19
工具:python3.7.1
用到的模塊:xlrd(負責讀取數據)
xlsxwriter(負責寫入數據)
glob(查找符合自己目的的文件)
一·模塊安裝(pip)
注意:這裏我用的是pip模塊來安裝,部分python版本沒有此功能,可自行百度
(1)進入命令提示符窗口(按Win + R進入)
(2)直接輸入pip install+模塊名
(模塊名:xlrd)
(模塊名:xlsxwriter)
(模塊名:glob)
(3)直接輸入pip list查看安裝的模塊
二.代碼
以下爲代碼及其註釋:
import xlrd
import xlsxwriter
import glob
biao_tou = "NULL"
wei_zhi = "NULL"
#獲取要合併的所有exce表格
def get_exce():
global wei_zhi
wei_zhi = input("請輸入Exce文件所在的目錄:")
all_exce = glob.glob(wei_zhi + "*.xlsx")
print("該目錄下有" + str(len(all_exce)) + "個exce文件:")
if(len(all_exce) == 0):
return 0
else:
for i in range(len(all_exce)):
print(all_exce[i])
return all_exce
#打開Exce文件
def open_exce(name):
fh = xlrd.open_workbook(name)
return fh
#獲取exce文件下的所有sheet
def get_sheet(fh):
sheets = fh.sheets()
return sheets
#獲取sheet下有多少行數據
def get_sheetrow_num(sheet):
return sheet.nrows
#獲取sheet下的數據
def get_sheet_data(sheet,row):
for i in range(row):
if (i == 0):
global biao_tou
biao_tou = sheet.row_values(i)
continue
values = sheet.row_values(i)
all_data1.append(values)
return all_data1
if __name__=='__main__':
all_exce = get_exce()
#得到要合併的所有exce表格數據
if(all_exce == 0):
print("該目錄下無.xlsx文件!請檢查您輸入的目錄是否有誤!")
os.system('pause')
exit()
all_data1 = []
#用於保存合併的所有行的數據
#下面開始文件數據的獲取
for exce in all_exce:
fh = open_exce(exce)
#打開文件
sheets = get_sheet(fh)
#獲取文件下的sheet數量
for sheet in range(len(sheets)):
row = get_sheetrow_num(sheets[sheet])
#獲取一個sheet下的所有的數據的行數
all_data2 = get_sheet_data(sheets[sheet],row)
#獲取一個sheet下的所有行的數據
all_data2.insert(0,biao_tou)
#表頭寫入
#下面開始文件數據的寫入
new_exce = wei_zhi + "test.xlsx"
#新建的exce文件名字
fh1 = xlsxwriter.Workbook(new_exce)
#新建一個exce表
new_sheet = fh1.add_worksheet()
#新建一個sheet表
for i in range(len(all_data2)):
for j in range(len(all_data2[i])):
c = all_data2[i][j]
new_sheet.write(i,j,c)
fh1.close()
#關閉該exce表
print("文件合併成功,請查看“" + wei_zhi + "”目錄下的test.xlsx文件!")
os.system('pause')
os.system('pause')
三.說明
程序使用說明:
(1) 運行”Exce表格合併.exe”文件
(2) 輸入要合併的所有.xlsx表格文件所在的盤目錄**(注意不要輸錯目錄,輸錯目錄或者亂輸入則直接強制退出)**
(3) 輸入完按回車後程序自動執行,生成test.xlsx文件
注意:如果原來就存在test.xlsx文件,必須先刪除,不然合併後的數據會保存在原來的test.xlsx文件,並且程序會一閃而過
最後感謝各位的觀看,本人是今天剛申請的博客,第一次寫,有什麼不對的地方請各位指出。
如有侵權請轉告本人刪除次文章(看其他大佬也這樣寫就跟着寫上去了)