openpyxl에서 새로운 파일을 만들 때, 새로 입력하는 데이터가 원본 데이터 파일 숫자 이후의 row에만 들어가요
처음에는 새 파일(result)에 위에서부터 차곡차곡 잘 쌓였는데, 어느 순간부터 원본데이터 약 5000개 숫자 바로 뒤의 숫자부터 새로운 데이터가 작성되기 시작해서 고쳐지지가 않네요....
import openpyxl
wb = openpyxl.load_workbook('.xlsx')
#sheet = wb.active
sheet = wb['최신본']
read_wb_result = openpyxl.load_workbook('result.xlsx')
read_ws_result = read_wb_result["Sheet1"]
#동일한것 검색하기
def GetCellValues(sheet_name,col_num):
row_list = []
for rowNum in range(2, sheet.max_row):
rowNames = sheet_name.cell(row=rowNum, column=col_num).value #29 = AC
row_list.append(rowNames)
return set(row_list)
main_ID_unique = GetCellValues(sheet,29)
print('현재 검색가능한 층서단위는 총',len(main_ID_unique),'개 입니다.')
print(main_ID_unique)
#SearchName의 목표는 명단에 있는지 확인하는 것이지만, while로 돌려야 할 때가 있고 안돌려야 할 때도 있음.
class SearchNames():
def __init__(self,search_name,refer_from):
if search_name in refer_from:
print("명단에 있습니다.")
self.search_name = search_name
else:
print("명단에 없습니다.")
keep_search = input('계속 검색하시겠습니까? y/n/o')
if keep_search == 'y':
while True: # names_list에 검색하려는 이름이 있을 때 까지 확인
if search_name in refer_from:
print("명단에 있습니다.")
self.search_name = search_name
break
elif keep_search == 'n':
pass
else:
print('잘못입력')
what_to_find = input("검색할이름을 입력하세요")
checkname_in_list = SearchNames(what_to_find,main_ID_unique)
set_id = checkname_in_list.search_name
before_unique_code = [] #이전코드 목록 #
abbTbyquadYear = [] #
for rowNum in range(2, sheet.max_row):
if sheet.cell(row=rowNum, column=29).value == set_id :#
abbreviationT = sheet.cell(row=rowNum, column=20).value #
quadD = sheet.cell(row=rowNum, column=4).value #
yearE = sheet.cell(row=rowNum, column=5).value #
abbTbyquadYear = [yearE, quadD, abbreviationT] #
before_unique_code.append(abbTbyquadYear) #
print('중복 처리 전의 이전코드 목록:',before_unique_code)
print()
unique_former_code_list = []
for i in before_unique_code:
if i not in unique_former_code_list:
unique_former_code_list.append(i)
print('unique 처리 후 : ',unique_former_code_list)
print()
reversed_sorted_list = sorted(unique_former_code_list, reverse=True)
print('sorted_list by year : ',reversed_sorted_list,end='\n')
print()
print('이전코드 목록 : ', end='')
former_code_final=''
for number in reversed_sorted_list:
in_line = str(number[2])+'('+str(number[1])+', '+str(number[0]) +')'
if number != reversed_sorted_list[-1]:
former_code_final+=in_line+', '
else:
former_code_final+=in_line
print(former_code_final)
latest_code = reversed_sorted_list[0][2]
print()
print("대표코드는", latest_code,"입니다.")
print('검색결과 도출완료',end=' /n')
print('출력 시작')
#반복을 통해 리스트에서 이름 넣기
header_newfile = ['이름','대표코드','이전코드']
up=1
for i in header_newfile :
read_ws_result.cell(row=1, column=up).value = i
up += 1
''''''
#결과 출력
'''
read_ws_result['A2'] = search_name
read_ws_result['B2'] = latest_code
read_ws_result['C2'] = former_code_final
'''
result_name_list = GetCellValues(read_ws_result, 1) #result 파일에 있는 목록들 다 가져오기
print(set_id, latest_code, former_code_final)
if set_id in result_name_list:
print("명단에 있습니다.")
print('자료입력 없이 프로세스를 종료합니다.')
else:
print("명단에 없습니다. 자료를 입력합니다.")
read_wb_result["Sheet1"].append([set_id, latest_code, former_code_final])
#= SearchNames(set_id, result_name_list) #이름과 result파일에 있는 이름리스트안에 명단에 있는지 확인
#writedown = read_ws_result.append([set_id, latest_code, former_code_final])
#writedown
read_wb_result.save('result.xlsx')
print('반영이 완료되었습니다. 상위 10개 자료를 출력합니다.')
#엑셀파일내 1-3row 출력
rows = read_ws_result[1:10]
for row in rows:
for cell in row:
print(cell.value)
youngeun.jo1494 님 428
M 2020년 10월 6일 4:21 오후