이번 시간에는 Clear Sheet/Range/Table activity를 python 코드로 구현해보는 시간을 가져보자.
(uipath Clear Sheet/Range/Table activity 알아보기)
def clear_sheet_range_table(file_name: str, sheet_name: [str, int], header_y_n: bool = True, range: str = None):
wb = load_workbook(file_name)
ws = wb[sheet_name]
if range:
pattern = r'[a-z A-Z]+'
result = re.findall(pattern, range)
alphabet = result
start_column = alphabet[0]
start_column = int(ord(start_column)) - 64
end_column = alphabet[1]
end_column = int(ord(end_column)) - 64
pattern = r'\d+'
result = re.findall(pattern, range)
numbers = result
start_row = int(numbers[0])
end_row = int(numbers[1])
for row in ws.iter_rows(min_row=start_row, max_row=end_row, min_col=start_column, max_col=end_column):
for cell in row:
cell.value = None
else:
if header_y_n:
ws.delete_rows(2, ws.max_row)
else:
ws.delete_rows(1, ws.max_row)
wb.save(file_name)
def clear_sheet_range_table(file_name: str, sheet_name: [str, int], header_y_n: bool = True, range: str = None):
range가 None값이면 시트 삭제로 할당된다.
시트 삭제 코드는 다음과 같다.
else:
if header_y_n:
ws.delete_rows(2, ws.max_row)
else:
ws.delete_rows(1, ws.max_row)
range에 범위를 기입하면 해당 범위 삭제로 할당된다.
범위 삭제 코드는 다음과 같다.
if range:
pattern = r'[a-z A-Z]+'
result = re.findall(pattern, range)
alphabet = result
start_column = alphabet[0]
start_column = int(ord(start_column)) - 64
end_column = alphabet[1]
end_column = int(ord(end_column)) - 64
pattern = r'\d+'
result = re.findall(pattern, range)
numbers = result
start_row = int(numbers[0])
end_row = int(numbers[1])
for row in ws.iter_rows(min_row=start_row, max_row=end_row, min_col=start_column, max_col=end_column):
for cell in row:
cell.value = None
pattern = r'[a-z A-Z]+'
result = re.findall(pattern, range)
alphabet = result
start_column = alphabet[0]
start_column = int(ord(start_column)) - 64
end_column = alphabet[1]
end_column = int(ord(end_column)) - 64
pattern = r'\d+'
result = re.findall(pattern, range)
numbers = result
start_row = int(numbers[0])
end_row = int(numbers[1])
for row in ws.iter_rows(min_row=start_row, max_row=end_row, min_col=start_column, max_col=end_column):
for cell in row:
cell.value = None
여담
범위 삭제의 경우 범위값이 넓으면 넓을수록 시간이 오래걸리는 단점이 있다.
원인은 2-3-3에 코드를 보면 알 수 있는데 범위로 지정된 해당 cell들을 하나하나씩 찾아서 삭제하기때문이다.
글 잘 봤습니다.