이번 시간에는 저번시간에 설명한 Append Range와 Append Range Workbook를 python으로 구현해 보는 시간을 가져보자!
Append Range Activity를 코드로 구현했을 경우 다음과 같다.
def append_range(save_file_name: str, save_sheet_name: str | int, read_file_name: str, read_sheet_name: str | int, headers: bool = False):
wb1 = load_workbook(save_file_name, data_only=False)
ws1 = wb1[save_sheet_name]
wb2 = load_workbook(read_file_name, data_only=False)
ws2 = wb2[read_sheet_name]
# 워크시트에서 셀 값을 추출하여 리스트로 저장
data = []
if headers:
min = 1
else:
min = 2
for row in ws2.iter_rows(min_row = min, values_only=True):
data.append(row)
# 데이터프레임 생성
df = pd.DataFrame(data)
for row in dataframe_to_rows(df, index=False, header=False):
ws1.append(row)
wb1.save(save_file_name)
wb1 = load_workbook(save_file_name, data_only=False)
ws1 = wb1[save_sheet_name]
1-1 . data를 append할 Excel Sheet를 지정한다.(원본 파일)
wb2 = load_workbook(read_file_name, data_only=False)
ws2 = wb2[read_sheet_name]
data = []
if headers:
min = 1
else:
min = 2
for row in ws2.iter_rows(min_row = min, values_only=True):
data.append(row)
df = pd.DataFrame(data)
1-2. append하고 싶은 데이터를 지정해주는 부분이다. 어떤 Excel파일 Sheet에서 데이터를 가져오는지 지정해주고 해당 데이터를 DataFrame(일명 df)로 변환하는 과정이다.
for row in dataframe_to_rows(df, index=False, header=False):
ws1.append(row)
wb1.save(save_file_name)
1-3. df화 시킨 데이터를 원본 Excel Sheet에 append하는 과정이다. 데이터를 append한 후, 저장한다.
Append Range에 대해서 알아보았다. 다음 순서로는 Append Range Workbook에 대해서 알아보자.
Append Range Workbook Activity를 코드로 구현했을 경우 다음과 같다.
def append_range_workbook(file_name: str, sheet_name: str | int, df):
wb = load_workbook(file_name, data_only=False)
ws = wb[sheet_name]
for row in dataframe_to_rows(df, index=False, header=False):
ws.append(row)
wb.save(file_name)
Append Range코드와는 다르게 매우 간단하게 구현되어 있다.
앞선 코드의 경우 읽어줄 Excel 파일을 두개 지정하고 그 중 하나를 df화 시켜야 했지만,
Append Range Workbook의 경우 처음부터 df를 인수로 받기에 df화 하는 과정이 삭제되었다.(따라서 파일 또한 하나만 호출한다.)