inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피

표에서 특정한 값 찾기 문제

해결된 질문

226

hrlee1266

작성한 질문수 2

1

화면 캡처 2024-07-24 202344.jpg

순번 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천개가 넘어서 반드시 필요합니다.

도와주세요!!!

python 한컴오피스

답변 2

1

hrlee1266

와.. 이리 간단한거였다니....
회사여서 아직 코드를 실행해보지 못해 감동이 덜하지만, 퇴근해보고 천천히 느껴보겠습니다.

일감으로는, 첫 번째 방법이 더욱 효율적으로 느껴지네여.

항상 빠르고 친절한 답변 감사합니다.

1

일코

hrlee1266님 안녕하세요?

말씀해 주신 경우는 두 가지 접근방식으로 사용 가능할 것 같습니다.

어느 정도 파이썬 문법을 알고 계신다는 가정하에

 

  1. 셀을 하나씩 내려가면서 매번 그 값이 리스트에 있는지 확인하는 방법입니다.

① 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()

이런 식으로요.

 

  1. 두 번째 방법은, "찾기"를 이용한 방식입니다.

단, "온전한 낱말" 옵션으로 찾기를 실행하고, 매번 "표의 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()

이런 식으로 수행하시면 될 것 같습니다.

 

추가로 질문이 있거나 오류가 발생하는 경우

댓글로 알려주시기 바랍니다.

 

감사합니다.

행복한 하루 되세요^^

2

일코

아래 코드와 시연화면을 참고하시면 도움이 될까 하여 남겨놓습니다.

현재 pyhwpx 최신버전은 0.30.4입니다.

from pyhwpx import Hwp

hwp = Hwp()
hwp.open("작업/파일/경로.hwp")

def 작업():
    """
    현재 셀에서 우측의 8, 9(I, J)번째 셀을 
    두 행으로 나눈 후,
    아래 셀에 각각 "12", "O"를 추가하기  
    """
    for _ in range(8):
        hwp.TableRightCell()
    hwp.TableCellBlock()
    hwp.TableCellBlockExtend()
    hwp.TableRightCell()
    hwp.TableSplitCell(Rows=2)
    hwp.Cancel()
    hwp.TableLowerCell()
    hwp.insert_text("O")
    hwp.TableLeftCell()
    hwp.insert_text("12")


대상리스트 = ["5", "8", "10-2", "12"]

# 방법1
hwp.set_pos(2, 0, 0)
while hwp.TableLowerCell():
    if hwp.get_selected_text() in 대상리스트:
        작업()
        hwp.TableColBegin()


# 방법2
hwp.MoveDocBegin()
for i in 대상리스트:
    hwp.find(i, WholeWordOnly=True)
    if hwp.get_cell_addr(as_="tuple")[1] == 0:
        작업()

 

방법1을 사용한 시연화면

image

 

방법2를 사용한 시연화면

image

행복한 하루 되세요!

1

hrlee1266

다시 한번 감사드립니다...

막연하게 공부하는 것만 같았는데,

아직 부족하여 질문하기는 했지만 배울 지식을 실제로 써먹을 수 있어서 뿌듯합니다.

무엇을 몰라 질문할 수 있다는 거 자체가 기분이 좋습니다.

일코님을 몰랐더라면 이걸 자동화할 수 있다는 거 자체를 생각치도 않았겟죠.

 

감사합니다. 건강하십시오

섹션7과 같은 수학 수식을 백지에서 시작할 때 어떻게 만들 수 있을까요?

0

76

1

hwp 병렬 작업시 클립보드 충돌문제

0

59

1

본문을 각주로 내리는 법

1

93

1

한글 자동화 삽도 삽입!!

1

384

2

한글 표 내부 위치 찾는 코드좀 알려주세요 ㅠㅠ

1

233

2

빈 문서를 새로 열때는 팝업이 안나오는데 기존 문서를 열면 팝업이 나옵니다

1

118

2

사무실 컴퓨터ㅠ

0

96

2

글자입력 여러번 실행기

0

67

1

현재 커서 문단에 아무런 내용이 없는지 확인하기

1

102

1

특정 스타일을 찾아 이동하는 방법

1

164

2

한/글 파일 open 시 '상위 버전에서...' 메세지 안 뜨게 하는 방법?

1

1111

1

win32com 으로 hwp 문자열 검색하기 문의

1

222

2

[응용] 엑셀문서 값을 필드에 입력하기 질

1

123

1

표 병합하기 관련

0

140

0

메타태그 삽입 자동화

0

191

1

스크립트 매크로 초기화 하고 싶습니다.

1

270

2

한글 창이 여러 개 존재할 때 pyhwpx 모듈로 접근하는 방법을 알고 싶습니다.

1

271

1

표안의 특정 필드에 있는 이미지를 복사하여 한글 외부에 저장하기

1

274

2

스타일 싹 다 지우고 바탕글로 통일하는 방법 문의드립니다.

1

283

0

하위의 여러 폴더 중 특정폴더의 사진만 추출하기

1

346

2

한글 수식을 자동으로 넣는 코드를 만들었는데, 수식 사이의 간격이 계속 벌어집니다.

1

659

1

보유 특허 검색 페이지에서 검색이 되지 않습니다.

1

139

1

hwp 페이지별 분할 저장하는 코드 관련 문의

0

448

0

한글 문서에 사용된 폰트명 추출

1

647

1