인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

금기문님의 프로필 이미지
금기문

작성한 질문수

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

표 내부 진입이 안되는 경우

해결된 질문

작성

·

312

1

질문에 잘 대답해주시고

항상 정말 감사드립니다.

 

특정 파일이 읽기 전용인 듯 싶은데요.

아래 코드를 실행하면

표가 선택이 되기는 하는데 내부 셀로 들어가지 않고 밖이 선택되어서

hwp.SetPosBySet(pos)
hwp.FindCtrl()

hwp.Run('ShapeObjTableSelCell')
while hwp.HAction.Run("TableRightCell"):
   text = get_text()

2024-01-24 17 20 08.png

그래서 아래 코드를 실행하면 바로 루프를 빠져 나와요~~

표 안의 데이터를 가지고 올 수 없네요.

어떻게 해야 될까요??

 

 

 

답변 2

1

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

답변 달아주신 걸 보니, 해당 문서가 암호가 걸린 배포용 문서가 아니고
단순히 읽기전용 속성이 선택된 문서인가보네요^^
(읽기 전용을 해제하시면 되는 문제 아닌가 싶기도 하고요..)

 

하여튼 "읽기전용문서"의 경우에는 텍스트를 복사해올 수 있습니다.

(굳이 pyhwpx가 아니어도 되는데,)

hwp.Run이나, hwp.HAction.Run으로 실행하는 메서드를 모두 아래와 같이
변경하시면 됩니다.

예를 들어 hwp.Run("ShapeObjTableSelCell") 같은 코드를
아래와 같이 세 줄로 변경합니다.

pset = hwp.HParameterSet.HInsertText
hwp.HAction.GetDefault("ShapeObjTableSelCell", pset.HSet)
hwp.HAction.Execute("ShapeObjTableSelCell", pset.HSet)

읽기전용 문서에서는 Run 메서드가 동작하지 않지만
위처럼 Execute를 통한 방법으로 변환하신 후 실행하면 잘 동작합니다.

 

말씀해주신 아이디어를 반영하여

pyhwpx 소스코드 중 table_to_df 관련 액션도
읽기전용에서도 불러올 수 있도록 업데이트해두었습니다.
(pyhwpx 0.7.13 버전부터 사용하실 수 있습니다.)

감사합니다^^

금기문님의 프로필 이미지
금기문
질문자

아~~ 정말 잘 되네요~~
정말 정말~~ 감사합니다~~

1

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

만약 위 문서가 배포용(읽기전용)이고, 쓰기용 암호가 걸려 있다면,
셀선택뿐만 아니라 특정 텍스트 복사조차도 할 수 없는 상태일 겁니다.
(API가 아니라 프로그램창 자체에서도 텍스트를 복사하거나, 다른 포맷으로 저장하는 작업이 불가능합니다ㅜ)

보안탭의 "배포용 문서 편집" 메뉴를 선택, 암호를 입력 후 편집상태가 되어야
위 작업을 수행하실 수 있습니다.

도움이 못 되어드려 죄송합니다ㅜ

금기문님의 프로필 이미지
금기문
질문자

from pyhwpx import Hwp
hwpx = Hwp()  # 메인 인스턴스 생성
filename = r'문서.hwp'
hwpx.open(filename)
i=0
while True :
    df = hwpx.table_to_df(i)
    i += 1
    print(df)

    if i > 10 :
        break

말씀것과 조금 다르게 전체적으로 모두 읽어오지 못하는 것은 아닌거 같습니다.
pyhwpx를 사용해서 위와같이 문서를 여는 경우에 df의 컬럼이름으로 읽혀져 들어갑니다.
다음과 같이 출력됩니다.

Empty DataFrame
Columns: [성명주민등록번호관계서명성명주민등록번호관계서명-본인(서명 또는 인)-(서명 또는 인)-배우자(서명 또는 인)-(서명 또는 인)-(서명 또는 인)-(서명 또는 인)-(서명 또는 인)-(서명 또는  인)]
Index: []

table_to_df() 에서 사용하시는 방법으로 가능하지 않을까요?

금기문님의 프로필 이미지
금기문

작성한 질문수

질문하기