해결된 질문
작성
·
109
1
순번 5번, 8번의 8번째 칸의 모습처럼, 줄나누기후 같은 숫자(12)와 O를 넣는 자동화를 하고 싶습니다.
즉,
1. 일정한 순번을 리스트를 통해 나열하면 EX) [5, 8, 10-2, 12 ....]
2. 그 값이 있는 셀을 찾은 후 오른쪽으로 이동, 줄나누기, 셀에 값입력 이런 작업을 자동화 하고 싶은 것입니다.
2번 작업은 일상의 코딩님 강의와 블로그를 통해 해결할 수 있을 거 같긴한데,
1번 작업을 어떻게 처리할지 도저히 감히 잡히지 않습니다.
(블로그를 보면 찾기 명령어는 자동화에 사용하지 않는 것 같고,
hwp.find()를 이용하는 것도 감이 잡히지 않습니다.)
저런식으로 단순히 1,2,3으로 진행되는 것이 아니고, 중간 중간 규칙성 없이 가지번호(10-1,10-2)가 등장합니다 ㅠ
또한 숫자가 여러 열에 존재하고 있어서 1열(즉 순번열)에 있는 숫자만을 찾아야 한다는 문제도 있습니다.
자동화가 필요한 이유가 저런 식의 순번이 5천개가 넘어서 반드시 필요합니다.
도와주세요!!!
답변 2
1
와.. 이리 간단한거였다니....
회사여서 아직 코드를 실행해보지 못해 감동이 덜하지만, 퇴근해보고 천천히 느껴보겠습니다.
일감으로는, 첫 번째 방법이 더욱 효율적으로 느껴지네여.
항상 빠르고 친절한 답변 감사합니다.
1
hrlee1266님 안녕하세요?
말씀해 주신 경우는 두 가지 접근방식으로 사용 가능할 것 같습니다.
어느 정도 파이썬 문법을 알고 계신다는 가정하에
셀을 하나씩 내려가면서 매번 그 값이 리스트에 있는지 확인하는 방법입니다.
① 1행1열("순번" 셀)로 이동 후 : hwp.set_pos(n, 0, 0)
②아래로 내려가면서 : while hwp.TableLowerCell():
③셀의 값이 해당 리스트 안에 있는지 확인하고 : if hwp.get_selected_text() in target_list:
④있으면 우측으로 8칸 이동해서 특정 작업을 완료한 후 : main()
⑤다시 1열로 이동 : hwp.TableColBegin()
def main():
for _ in range(8):
hwp.TableRightCell() # 우측으로 8칸 이동 후
hwp.TableCellBlock() # 셀블록
hwp.TableCellBlockExtend() # 셀블록 확장
hwp.TableRightCell() # 셀 두 개 선택
hwp.TableSplitCell(Rows=2) # 2행으로 쪼개기
...
target_list = ["5", "8", "10-2", "12"]
hwp.set_pos(n, 0, 0)
while hwp.TableLowerCell():
if hwp.get_selected_text() in target_list:
main()
hwp.TableColBegin()
이런 식으로요.
두 번째 방법은, "찾기"를 이용한 방식입니다.
단, "온전한 낱말" 옵션으로 찾기를 실행하고, 매번 "표의 A열"에 있는지 추가로 체크해줘야 합니다.
① 문서 시작으로 이동 : hwp.MoveDocBegin()
② 리스트의 첫 요소부터 찾기 실행 : for i in target_list: hwp.find(i, WholeWordOnly=1)
③ 표 안에 있고, A행에 있는지 확인 : if hwp.get_cell_addr(as_="tuple")[1] == 0:
④ 작업 수행 : main()
target_list = ["5", "8", "10-2", ]
hwp.MoveDocBegin()
for i in target_list:
hwp.find(i, WholeWordOnly=1)
if hwp.get_cell_addr(as_="tuple")[1] == 0:
main()
이런 식으로 수행하시면 될 것 같습니다.
추가로 질문이 있거나 오류가 발생하는 경우
댓글로 알려주시기 바랍니다.
감사합니다.
행복한 하루 되세요^^
다시 한번 감사드립니다...
막연하게 공부하는 것만 같았는데,
아직 부족하여 질문하기는 했지만 배울 지식을 실제로 써먹을 수 있어서 뿌듯합니다.
무엇을 몰라 질문할 수 있다는 거 자체가 기분이 좋습니다.
일코님을 몰랐더라면 이걸 자동화할 수 있다는 거 자체를 생각치도 않았겟죠.
감사합니다. 건강하십시오
아래 코드와 시연화면을 참고하시면 도움이 될까 하여 남겨놓습니다.
방법1을 사용한 시연화면
방법2를 사용한 시연화면
행복한 하루 되세요!