본문 바로가기

분류 전체보기470

pyhwpx로 필드 채우는 방법 기초(중요) 아래아한글 문서에 필드가 삽입되어 있는 경우 각 필드에 값을 채워넣는 몇 가지 방법을 소개한다. 1. 문서 내에 동일한 이름의 필드가 여러 개 존재하는 경우 ①단순히 hwp.put_field_text(field=필드명, text=값)으로 입력하면, 해당하는 모든 필드에 동일한 값이 일괄 삽입된다. ②만약 "이름"이라는 필드마다 다른 이름을 입력하고 싶다면, 두 번째(text) 파라미터에 리스트나 튜플을 넣으면 된다. ③ 동일명의 필드 중 n번째 필드에만 특정 문자열을 입력하는 경우에는 idx 파라미터를 추가하면 된다. idx 파라미터를 사용하지 않고, 직접 field{{i}} 방식을 사용할 수도 있다. (f스트링을 사용하는 경우, f스트링이 중괄호 세 겹을 소모하므로 총 다섯겹의 중괄호로 감싸야 함) 여.. 2023. 12. 26.
업무자동화 커리큘럼 #구름에듀 보호되어 있는 글 입니다. 2023. 12. 18.
파이콘2023 발표영상 개인적으로는 발표를 마치고 아쉬운 부분이 많았다. 우선 발표를 너무 못 했고ㅜ 내 목소리도 생각했던 것보다 너무 작았다. 발표 중간엔 이상한 브라우저 창이 떠서 프레젠테이션 화면을 가렸고.. 어휴 그래도 이 발표를 준비하면서 나름의 전환점이 있었는데, "일반인" 입장에서 API의 한계를 실감했다는 부분이다. 코딩 입문자의 입장을 대변하기에는, 내가 너무 파이썬 문법에 익숙해져버려서 내가 "쉽다"고 느끼는 대부분의 코드가 일반인들에게 "쉽지 않다"고 느껴진다는 걸 깨달았다. API를 내가 아무리 쉽게 설명해도, 일반인들에겐 그저 "길고 무지막지한 코드"로 느껴진다는 것도.. pyhwpx 개발과 문서화에 박차를 가해야겠다. 2023. 12. 12.
종로에 와서.. 업무자동화 강의가 잡혀서 저녁기차를 타고 서울에 왔다. 종로 쪽은 모텔가격이 다른동네 호텔급이라서 동대문이나 근처로 갈까 하다가 나름 여기 명물이라는 현대사우나에 들어왔다. 찜질방 가격이었지만 목욕탕이었고 아무리 행복회로를 돌리고 추억보정이 된다고 해도 "나름 괜찮았다" 까지는 못 올 것 같다. 다음엔 연수원에 숙박시설이 있는지 물어봐야지ㅋ 2023. 12. 8.
[예제] 특정 단어들에다 메모교정표 삽입하기 pyhwpx는 win32 기반의 한/글 오토메이션 API 명령어의 복잡성을 보완하고자 업무자동화에 사용되는 여러 가지 상위기능들을 메서드로 제공합니다. 아래와 같은 문서가 있을 때, 아래와 같은 교정단어 사전을 통해 교정하고자 하는 단어에 메모고침표를 달아주는 것이 목표입니다. # 교정대상 단어 예시자료(dict) word_dict = { "가감": "→더하고 빼기, 더하거나 빼기", "가건물": "→임시 건물", "가결의": "→임시 결의", "가공": "→영향을 미치다", } 결과물이 대략 다음과 같을 때, 기존 win32com과 한/글 오토메이션 API를 사용한 전통적인(?) 코드는 대략 아래와 같습니다. import os import win32com.client as win32 from tkint.. 2023. 12. 6.
문서의 표를 csv나 판다스 데이터프레임으로 추출하는 메서드 # table_to_csv # table_to_df 한/글의 표를 csv나 판다스 데이터프레임(df)로 저장할 때 곤혹스러운 경험을 하신 적이 있을 거예요. 왜냐면 한/글의 표를 클립보드에 복사하고 붙여넣기해보면 행 구분 없이 전부 줄바꿈(\r\n) 기호로만 구분된 문자열이 되거든요. '그럼 표의 모양(3행5열)을 기억해 뒀다가 적당히 잘라서 저장하면 되지 않나?' 이렇게 생각하실 수도 있지만, 아래와 같이 셀 안에 줄바꿈이 있는 경우는 더욱 난처해지죠. 그래서 pyhwpx에서는 table_to_csv, table_to_df 메서드를 제공하고 있습니다. 한 번 사용해볼까요?ㅎ 캐럿은 아무데나 두고 아래와 같이 실행하면 문서 첫 번째 표를 csv로 변환해요. (n번째 표는 idx=n이라고 파라미터를 추가하시면 돼요.) hwpx.table_to_df( fil.. 2023. 12. 1.
문서를 불러와서 저장하거나 다른이름으로 저장하는 방법 업무자동화를 하면서 빈 문서에서부터 편집을 하시는 분은 많지 않을 거라고 생각해요. 보통은 특정 포맷의 템플릿 파일을 만들어 두고, 단순 반복 작업에 자동화를 활용하죠. 대표적으로 문서의 특정 폼을 필드와 누름틀로 만들어 두고, 엑셀 또는 다른 한/글 문서들의 데이터를 가져와서 빈 칸을 채우는 식의 작업이 대부분일 것 같아요. (필드와 누름틀에 대한 사용법도 조만간 해드릴 거예요.) 이번 포스팅에서는 문서를 불러와서, 편집 후 저장하거나, 다른 이름으로 저장하는 방법을 알아볼게요. 우선 문서를 불러오는 명령어는 open, 문서를 저장하는 명령어는 save, 다른이름으로 저장하는 메서드는 save_as 예요. hwpx.open 메서드의 arg 파라미터 가끔 대량의 문서를 불러와서 일괄편집하고 저장하는 작업.. 2023. 11. 30.
두 개 이상의 문서를 동시에 열어서 편집하고 싶은 경우 한/글은 "창"과 "탭"을 통해 동시에 두 개 이상의 문서를 열어서 편집할 수 있습니다. pyhwpx에서 탭을 추가하는 메서드는 add_tab()이며, 창을 추가하는 메서드는 add_doc()입니다. 편집문서를 전환하려면 switch_to(idx) 메서드를 사용합니다. 다만 유의하실 점이 하나 있는데요. 마우스 클릭이나 Alt-Tab 등으로 직접 한/글 창의 포커스를 변경하면 hwpx인스턴스도 (switch_to 메서드와 상관없이) 동일하게 포커스된 문서를 가리키게 됩니다. 특히 빈 문서가 아니라 기존의 문서를 열어서 편집하시는 작업이라면, 작업 도중 인덱스 몇 번이 어느 문서를 가리키고 있는지 헷갈릴 수 있는데요. 인스턴스 자체를 여러 개 생성하여 작업하실 수도 있습니다! 개인적으로 이 방법이 조작이 .. 2023. 11. 30.
스크립트매크로를 파이썬 함수로 고쳐주는 함수 #clipboard_to_pyfunc() 자동화 작업을 하다 보면, 한/글 API에 나와 있지 않은 기능을 스크립트매크로로 녹화해서 파이썬 함수로 변환하려고 하는데, 매크로 자체가 너무 길고 복잡할 때가 있어요. 예를 들어, 아래는 "찾아바꾸기"를 녹화한 스크립트매크로예요. function OnScriptMacro_중국어1성() { HAction.GetDefault("AllReplace", HParameterSet.HFindReplace.HSet); with (HParameterSet.HFindReplace) { MatchCase = 0; AllWordForms = 0; SeveralWords = 0; UseWildCards = 0; WholeWordOnly = 0; AutoSpell = 1; Direction = FindDir("Forward.. 2023. 11. 30.