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

HH Jo님의 프로필 이미지

작성한 질문수

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

누름틀 없는 대량의 한/글 문서를 엑셀로 취합하기#라이브코딩

누름틀 없는 한글문서 엑셀로 취합하기 응용 질문드려요

해결된 질문

작성

·

557

1

해당 강의 잘 보고 응용해보려고 하는데 잘 풀리지 않는 부분이 있어 문의 드립니다.

제가 자동화하고자 하는 파일은 예시의 서식이 여러파일형태로 존재하는 게 아니라 한 파일안에 동일한 양식의 표가 반복되는 형태인데요.

동일한 양식의 표를 엑셀에 항목별로 입력하고자 합니다.

강의로 예를 들면 강의에서는 용역과제 심의신청서가 각 파일에 1개씩 이어서 폴더내의 파일을 하나하나 열면서 안의 내용을 리스트로 정리하고, 리스트 중 옮길 값을 추출했지만

제 경우에는 용역과제 심의신청서가 한 파일에 모두 모여있는 경우라고 할 수 있을 것 같습니다.

그래서 파일안에 있는 텍스트를 모두 추출하여 list화 까지는 수행했는데, 거기서 엑셀로 옮길 값만 추출하는데 있어서 어떤 규칙성을 찾기가 어려워서 어떻게 해야할지 좀 막막하네요...

예를 들면 예시에서 과제명이 contents[1]이었으면 다음 표에서는 과제명이 contents[26] (<-연구결과활용방안다음)이어야 하는데 중간중간 끊기는 부분이 있는지 갑자기 contents[27]이라던가 번호가 하나씩 밀리는 문제가 발생합니다.

이런 경우에는 어떤 for문으로 반복되는 표 양식 안의 내용을 가져올 수 있을까요..?

답변 2

1

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

HH Jo님 안녕하세요?^^

제가 질문을 정확하게 이해하지는 못한 것 같지만..

한 파일 안에 있는 여러 개의 표에서 데이터를 추출하는 작업은 몇 번 해 본 적이 있어서

제가 해결했던 방법을 몇 가지 말씀드려보겠습니다.

 

1. hwp.SetPos()와 hwp.GetText()를 이용

첫 번째는, 표의 크기가 일정한 경우에 SetPos와 GetText를 이용하는 방법입니다.

<예를 들어 아래와 같은 경우?>

image

표 내의 동일한 위치 셀들의 좌표는 GetPos()를 했을 때

규칙적으로 등차수열을 이룹니다.

예를 들어,

첫 번째 표의 특정 셀 좌표가 (12, 0, 0)이라면

두 번째 표의 동일한 셀 좌표는 (87, 0, 0), 세 번째 표의 셀 좌표는 (162, 0, 0) 가 됩니다.

그래서 12 + 75 * n (n은 0부터~) 이라는 공식이 만들어지니까

이걸 for문으로 돌려서 동일한 셀의 텍스트들만 추출하실 수 있습니다.

셀의 문자열을 추출하는 함수는 아래와 같이 GetText를 이용하여 만들면 됩니다.

def get_text():
    """
    현재 셀의 문자열을 추출
    """
    hwp.Run("TableCellBlock")
    hwp.InitScan(Range=0xff)
    total_text = ""
    state = 2
    while state not in [0, 1]:
        state, text = hwp.GetText()
        total_text += text
    hwp.ReleaseScan()
    hwp.Run("Cancel");
    return total_text

이렇게 두 개의 함수(SetPos, get_text)를 for문 안에 넣어서 간편하게 추출을 하실 수 있습니다.

 

이밖에도 다양한 방법이 있겠지만, 가장 좋은 방법은... 음...

메일로 적당히 민감한 정보를 지우거나 수정하신 예시파일을 보내주시고,

어느 내용을 추리겠다고 알려주시면

활용하시거나 공부하실 수 있을 만한 코드를 작성해서 송부드리겠습니다.

제 메일주소는 martinii.fun@gmail.com입니다.

 

행복한 하루 되세요^^

1

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

먼저, 질문을 통해 제시해 주신 내용을 기반으로 설명해 드릴게요.

예시에서 언급하신 동일한 양식의 표가 한 파일에 모두 모여있는 경우에는, 엑셀로 옮길 값을 추출하는 것이 어렵다고 하셨는데요. 이런 경우에는 추출해야 하는 값의 규칙성을 찾기 어렵습니다.

하나의 파일에 있는 텍스트를 모두 추출하여 리스트로 정리하신다고 하셨는데, 가장 간단한 방법은 추출된 리스트를 순차적으로 확인하면서 필요한 값을 찾는 것입니다. 예를 들어, 과제명이라는 필드에 해당하는 값을 추출하기 위해서는 리스트에서 해당 값을 매번 찾고, 그 다음 표에서는 몇 번째 항목에 해당하는지 파악해야 합니다.

하지만 중간에 끊기는 부분이나 번호가 밀리는 문제가 발생한다고 하셨는데, 이는 파일의 구조나 형식에 따라 달라질 수 있습니다. 일정한 규칙성을 찾지 못할 경우, 해당 파일의 구조나 데이터 형식을 좀 더 자세히 살펴보는 것이 도움이 될 수 있습니다. 예를 들어, 엑셀 파일의 경우 특정셀을 기준으로 값을 읽어오는 것이 가능하니, 이런 방법을 사용해도 좋을 것 같습니다.

더 구체적인 답변을 드리기 위해서는 실제 파일의 구조와 추출해야 하는 값의 위치 등을 알아야 할 것 같습니다. 그래서 조금 더 자세한 정보를 알려주시면, 더 정확한 도움을 드릴 수 있을 거예요. 혹시 가능하시다면 파일의 구조나 예시 데이터를 더 자세히 설명해 주시면 감사하겠습니다.

추가적으로, 엑셀과 관련된 내용이기 때문에 이 부분은 좀 더 전문적인 도움이 필요할 수 있습니다. 엑셀 공식 문서나 온라인 커뮤니티를 참고하시면 더 많은 도움을 받으실 수 있을 거예요. 인프런의 ‘누름틀 없는 한글문서 엑셀로 취합하기’ 강의에서는 누름틀 없는 한글 문서를 엑셀로 취합하는 방법을 알려주지만, 동일한 양식의 표가 모인 파일의 특정 값을 추출하기 위한 방법은 다를 수 있습니다.

더 필요한 도움이 있다면 언제든지 물어보세요. 좋은 결과가 있기를 바랄게요!

HH Jo님의 프로필 이미지

작성한 질문수

질문하기