반응형
안녕하세요
선생님 유튜브, 블로그 강의를 열심히 따라하고 있는 파이썬 초보입니다.
제 업무에 적용해 보려고 열심히 코딩 중인데,
어려움이 생겨 도움을 요청하고자 실례를 무릅쓰고 이렇게 메일 드립니다.
아래 소스를 실행해 보면
hwp.HAction.GetDefault("TableCreate", hwp.HParameterSet.HTableCreation.HSet)
hwp.HParameterSet.HTableCreation.Rows = 3
hwp.HParameterSet.HTableCreation.Cols = 7
hwp.HAction.Execute("TableCreate", hwp.HParameterSet.HTableCreation.HSet)
hwp.HAction.Run("MoveTopLevelEnd")
hwp.HAction.Run("BreakPara")
hwp.HAction.GetDefault("TableCreate", hwp.HParameterSet.HTableCreation.HSet)
hwp.HParameterSet.HTableCreation.Rows = 5
hwp.HParameterSet.HTableCreation.Cols = 5
hwp.HAction.Execute("TableCreate", hwp.HParameterSet.HTableCreation.HSet)
hwp.HAction.Run("MoveTopLevelEnd")
hwp.HAction.Run("BreakPara")
첫번째 표는 잘 만들어집니다만, 두번째 표가 아래처럼 에러가 납니다.
File "d:\Git\test\python study\hwpt.py", line 23, in <module>
hwp.HAction.Execute("TableCreate", hwp.HParameterSet.HTableCreation.HSet)
File "C:\Users\xxxxxx\AppData\Local\Temp\gen_py\3.8\7D2B6F3C-1D95-4E0C-BF5A-5EE564186FBCx0x1x0\HAction.py", line 35, in Execute
return self._oleobj_.InvokeTypes(15001, LCID, 1, (11, 0), ((8, 1), (9, 1)),actname
pywintypes.com_error: (-2147417851, '서버에서 예외 오류가 발생했습니다.', None, None)
여러 검색을 해보았습니다만,
안되는 이유를 확인하지 못해 답답하네요
마티니 님께서 도움을 주시면 감사하겠습니다.
행복한 하루 되시길 바랍니다~
우선 위 오류는 TreatAsChar 속성을 설정해주지 않았기 때문에 발생합니다.
hwp.HParameterSet.HTableCreation.TableProperties.TreatAsChar = 1 # 글자처럼 취급
Execute 하기 전에 저 한 줄만 추가해주시면 잘 실행될 것입니다.
다만, 행과 열만 설정하고 실행시 문서여백 등을 무시한, 정말 무식한 표가 만들어지기 때문에,
아래 코드를 참고하여 보완하시길 바랍니다.
감사합니다.

동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.
아래아한글 문서 안에 표를 생성하는 코드입니다.
거의 대부분의 업무자동화 경우에는 hwp파일을 미리 만들어두고 복사해서 쓰시겠지만,
동적으로 대량의 표를 행과 열이 다르게 자동생성해야만 할 때 활용하실 수 있겠습니다.
코드 자체는 상당히 직관적이고, 복잡하지 않기 때문에 복사해 두고 쓰실 수 있습니다.
"""
아래의 148mm는 종이여백 210mm에서 60mm(좌우 각 30mm)를 뺀 150mm에다가,
표 바깥여백 각 1mm를 뺀 148mm이다. (TableProperties.Width = 41954)
각 열의 너비는 5개 기준으로 26mm인데 이는 셀마다 안쪽여백 좌우 각각 1.8mm를 뺀 값으로,
148 - (1.8 x 10 =) 18mm = 130mm
그래서 셀 너비의 총 합은 130이 되어야 한다.
아래의 라인28~32까지 셀너비의 합은 16+36+46+16+16=130
표를 생성하는 시점에는 표 안팎의 여백을 없애거나 수정할 수 없으므로
이는 고정된 값으로 간주해야 한다.
"""
#%%
import win32com.client as win32 # COM 임포트
#%%
hwp = win32.gencache.EnsureDispatch("HWPFrame.HwpObject") # 아래아한글 오브젝트 생성
hwp.XHwpWindows.Item(0).Visible = True # 숨김해제
#%%
hwp.HAction.GetDefault("TableCreate", hwp.HParameterSet.HTableCreation.HSet) # 표 생성 시작
hwp.HParameterSet.HTableCreation.Rows = 5 # 행 갯수
hwp.HParameterSet.HTableCreation.Cols = 5 # 열 갯수
hwp.HParameterSet.HTableCreation.WidthType = 2 # 너비 지정(0:단에맞춤, 1:문단에맞춤, 2:임의값)
hwp.HParameterSet.HTableCreation.HeightType = 1 # 높이 지정(0:자동, 1:임의값)
hwp.HParameterSet.HTableCreation.WidthValue = hwp.MiliToHwpUnit(148.0) # 표 너비
hwp.HParameterSet.HTableCreation.HeightValue = hwp.MiliToHwpUnit(150) # 표 높이
hwp.HParameterSet.HTableCreation.CreateItemArray("ColWidth", 5) # 열 5개 생성
hwp.HParameterSet.HTableCreation.ColWidth.SetItem(0, hwp.MiliToHwpUnit(16.0)) # 1열
hwp.HParameterSet.HTableCreation.ColWidth.SetItem(1, hwp.MiliToHwpUnit(36.0)) # 2열
hwp.HParameterSet.HTableCreation.ColWidth.SetItem(2, hwp.MiliToHwpUnit(46.0)) # 3열
hwp.HParameterSet.HTableCreation.ColWidth.SetItem(3, hwp.MiliToHwpUnit(16.0)) # 4열
hwp.HParameterSet.HTableCreation.ColWidth.SetItem(4, hwp.MiliToHwpUnit(16.0)) # 5열
hwp.HParameterSet.HTableCreation.CreateItemArray("RowHeight", 5) # 행 5개 생성
hwp.HParameterSet.HTableCreation.RowHeight.SetItem(0, hwp.MiliToHwpUnit(40.0)) # 1행
hwp.HParameterSet.HTableCreation.RowHeight.SetItem(1, hwp.MiliToHwpUnit(20.0)) # 2행
hwp.HParameterSet.HTableCreation.RowHeight.SetItem(2, hwp.MiliToHwpUnit(50.0)) # 3행
hwp.HParameterSet.HTableCreation.RowHeight.SetItem(3, hwp.MiliToHwpUnit(20.0)) # 4행
hwp.HParameterSet.HTableCreation.RowHeight.SetItem(4, hwp.MiliToHwpUnit(20.0)) # 5행
hwp.HParameterSet.HTableCreation.TableProperties.TreatAsChar = 1 # 글자처럼 취급
hwp.HParameterSet.HTableCreation.TableProperties.Width = hwp.MiliToHwpUnit(148) # 표 너비
hwp.HAction.Execute("TableCreate", hwp.HParameterSet.HTableCreation.HSet) # 위 코드 실행
# hwp.MovePos(3) # 문서 끝으로 이동반응형
'아래아한글 자동화 > python+hwp 중급' 카테고리의 다른 글
| [자동화문의] 표 안에 이미지 넣는 작업 (6) | 2020.12.06 |
|---|---|
| 조항 재정렬하기("제?조(조항명)"의 경우) (2) | 2020.12.06 |
| 현재 셀의 사이즈 알아내기/변경하기 (0) | 2020.11.30 |
댓글