해결된 질문
작성
·
289
1
질문에 잘 대답해주시고
항상 정말 감사드립니다.
특정 파일이 읽기 전용인 듯 싶은데요.
아래 코드를 실행하면
표가 선택이 되기는 하는데 내부 셀로 들어가지 않고 밖이 선택되어서
hwp.SetPosBySet(pos)
hwp.FindCtrl()
hwp.Run('ShapeObjTableSelCell')
while hwp.HAction.Run("TableRightCell"):
text = get_text()
그래서 아래 코드를 실행하면 바로 루프를 빠져 나와요~~
표 안의 데이터를 가지고 올 수 없네요.
어떻게 해야 될까요??
답변 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() 에서 사용하시는 방법으로 가능하지 않을까요?
아~~ 정말 잘 되네요~~
정말 정말~~ 감사합니다~~