1. 程式人生 > >python 多個excel合併到一個sheet中

python 多個excel合併到一個sheet中

-- coding:utf-8 --

#多個excel合併成一個sheet
import xlrd, xlsxwriter

待合併excel

allxls = [“C:\Users\zhudong\Desktop\azkaban自動爬取\2018-09-01.xlsx”,
“C:\Users\zhudong\Desktop\azkaban自動爬取\2018-09-02.xlsx”,
“C:\Users\zhudong\Desktop\azkaban自動爬取\2018-09-03.xlsx”]

目標excel

end_xls = “C:\Users\zhudong\Desktop\azkaban自動爬取\9999-99-99.xlsx”

def open_xls(file):
try:
fh = xlrd.open_workbook(file)
return fh
except Exception as e:
print(“開啟檔案錯誤:” + e)

根據excel名以及第幾個標籤資訊就可以得到具體標籤的內容

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

獲取第一個excel的sheet個數以及名字作為標準

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)

定義一個目標excel

endxls = xlsxwriter.Workbook(end_xls)
all_sheet_value = []

把所有內容都放到列表all_sheet_value中

for sheet_num in range(0, first_file_sheet_num):
all_sheet_value.append([])
for file_name in allxls:
print(“正在讀取” + file_name + “的第” + str(sheet_num + 1) + “個標籤…”)
file_value = get_file_value(file_name, sheet_num)
all_sheet_value[sheet_num].append(file_value)

print(all_sheet_value)

num = -1
sheet_index = -1

將列表all_sheet_value的內容寫入目標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的內容
end_xls_sheet.write(num1, num2, sheet3)

endxls.close()