인프런 커뮤니티 질문&답변

­김시운님의 프로필 이미지
­김시운

작성한 질문수

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

문서 내 특정 표의 내용 읽기

해결된 질문

작성

·

1K

·

수정됨

1

한 문서 안에 표가 여러개 있을 때

하나씩 접근해서 표의 행과 열, 그리고 셀로 접근해서

셀의 데이터를 읽어 오고 싶습니다.

 

"한/글 표에 데이터프레임 채우기" 강의에서 특정 표로 접근하는 부분은

확인하고 잘 되고 있습니다.

여기서 각 셀을 순환하면서 접근하여

각 셀 내에 있는 텍스트를 읽어 오고 싶습니다.

 

답변 부탁 드립니다. 감사합니다.

답변 2

1

일코님의 프로필 이미지
일코
지식공유자

시운님 안녕하세요?^^ (회신이 늦어 죄송합니다..)

각각의 표에 순서대로 접근하는 방법까지 알아내셨다면,

이제 필요한 부분은

  1. 셀 주소 확인

  2. 셀 내용 확인

  3. 다음 셀로 이동

정도로 세 가지 코드만 있으면 될 것 같네요. (그렇죠?^^;)

 

우선 1. 셀 주소를 확인하는 방법은

def 한글_셀주소():
    """
    표 안에 있는 경우 현재 위치한 셀의 주소를 반환한다.
    """
    if hwp.SelectionMode != 3:
        hwp.HAction.Run("TableCellBlock")
    return hwp.KeyIndicator()[8].split(":")[0][1:-1]

 

 

그리고 2. 셀 내용을 확인하는 방법은

def 선택셀_텍스트():
    """
    해당 셀이 선택된 상태에서
    셀의 내용(문자열)을 리턴하는 함수
    """
    hwp.InitScan(Range=0xff)
    total_text = ""
    state = 2
    while state not in [0, 1]:
        state, text = hwp.GetText()
        total_text += text
    hwp.ReleaseScan()
    return total_text

 

마지막으로 3. 다음(우측) 셀로 이동하는 방법은

hwp.HAction.Run("TableRightCell")

# 위 메서드 실행시, 우측 이동에 성공하면 매번 True를 반환하며
# 표의 마지막 셀에 도착한 경우 False를 반환합니다.
# 모든 셀 순회시 이 값을 while문의 조건으로 사용하시면 됩니다.
#
# 예
#
# while True:
#     # 특정작업
#     if not hwp.HAction.Run("TableRightCell"):
#         break

입니다.

위 함수를 조합하셔서

원하시는 작업 자동화에 성공하시기 바랍니다^^

감사합니다. 행복한 하루 되세요!!~

-2

안녕하세요, 인프런 AI 인턴이에요.

문서 내 특정 표의 내용을 읽기 위해서는 먼저 해당 문서를 읽어들이고, 표를 찾아 접근해야 합니다. 이후 각 셀 내에 있는 텍스트를 읽어들이는 방법은 다음과 같이 구현할 수 있습니다.

  1. 표 찾기: 문서 내의 모든 표를 찾아서 원하는 표를 탐색합니다. 표는 보통

    태그로 구성되며, BeautifulSoup 라이브러리를 활용해서 표를 찾을 수 있습니다.

  2. 행과 열 접근: 찾아낸 표에서 행과 열을 접근하는 방법은 보통 표에서

  3. 태그로 구성된 각 행을 순회하면서 각 셀에 접근하는 방식입니다. 이를 위해 for문을 활용해서 각 행과 해당 행의 각 셀에 접근합니다.

  4. 셀 내 텍스트 읽기: 각 셀에 접근해서 그 내부의 텍스트를 읽기 위해서는 get_text() 메서드를 활용할 수 있습니다.

  5. 위 방법을 참고해서 특정 표 내부의 셀 데이터를 읽어들이는 코드를 구현하시면 될 것 같습니다. 저희 강의 내용에서도 한/글 표의 예시에 대한 코드를 제시해드렸으니 참고해보세요.

    위의 내용이 도움이 되었길 바랍니다. 감사합니다.

    ­김시운님의 프로필 이미지
    ­김시운

    작성한 질문수

    질문하기