# encoding:utf-8 import pandas as pd class OpenMyXLS(): def __init__(self, filepath): self.filepath = filepath self.openxls() def openxls(self): df = pd.read_excel(self.filepath,sheet_name=None) print("所有的sheet名稱:") sheetNameList = list(df) print(sheetNameList) print('獲取sheet數量:') sheetNums = len(sheetNameList) print(sheetNums) print("獲取索引對應的sheet對應的名稱") k = 0 writer = pd.ExcelWriter('../totest81.xlsx') while k < len(sheetNameList): sheetName = sheetNameList[k] print(sheetName) df = pd.read_excel(self.filepath, sheet_name=sheetName) print("獲取表頭") topNames = (df.keys()).values print(topNames) print("查找是否有81BOM列") findArr = self.returnFiindAll(topNames) print("整合后的表頭數據") print(findArr) if findArr: print("獲取對應列的所有數據") d = self.returnDict(findArr, df) todf = pd.DataFrame(d) print("刪除空行") todf = todf.dropna(how='all') print("刪除該列中有nan的行") todf = todf.dropna(subset='81BOM') todf.to_excel(writer, sheet_name=sheetName, index=False) else: print("沒有找到想要的列表頭") k += 1 writer.save() writer.close() print("創建excel OK!!!") df = pd.read_excel("../totest81.xlsx", sheet_name=None) sheetNameList = list(df) print(sheetNameList) self.qcfxls('../totest81.xlsx', sheetNameList) def qcfxls(self, filepath, sheetNameList): writer = pd.ExcelWriter('../totest82.xlsx') # 讀取excel中的數據 j = 0 while j < len(sheetNameList): sheetName = sheetNameList[j] data = pd.DataFrame(pd.read_excel(filepath, sheetName)) # 查看獲取的數據 #print(data) # 查看去除重復行的數據 no_re_row = data.drop_duplicates() print(no_re_row) # 將去除重復行的數據輸出到excel表中 no_re_row.to_excel(writer, sheet_name=sheetName, index=False) j +=1 writer.save() writer.close() print("去除重復數據OK") '''返回插入EXCEL數據的字典形式''' def returnDict(self, findArr, df): i = 0 d = {} while i < len(findArr): allData1 = df.loc[:, findArr[i]].values allData1a = self.qukongge(allData1) d[findArr[i]] = allData1a i += 1 return d '''返回符合要求的表頭''' def returnFiindAll(self, topNames): findArr = [] for topName in topNames: if topName == '81BOM': findArr.append(topName) print(findArr) if '70 HSG Bin' in topName: findArr.append(topName) print(findArr) if '70 MLB Bin' in topName: findArr.append(topName) print(findArr) return findArr '''去取字符串左右空格''' def qukongge(self, lieDatas): allData_strip = [] for allData in lieDatas: if isinstance(allData, str): # print(allData.strip()) allData_strip.append(allData.strip()) else: # print(allData) allData_strip.append(allData) return allData_strip if __name__ == '__main__': filepath = '../test81.xlsx' oxl = OpenMyXLS(filepath)