이야기를 나눠요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
스타일 초기화 코드 고민중
Seobuk/HWPX_St_Converter: HWPX 파일의 스타일을 간편하게 수정할 수 있는 도구로, 사용자 친화적인 GUI와 자동 스타일 변환 기능을 제공합니다. (github.com) 스타일 초기화를 위해서 노력하고 있습니다. 공부하면서 이것저것 하고 있는데 스타일을 한글처음 만들었을때로 변환 적용을 하니까 (헤더 바꿔서)안쓰는 스타일도 적용되어 남아 있네요 저는 지금 문서의 모든 스타일을 지우고 스타일을 초기화 하려고 하면 어떻게 코드를 수정해야 할까요? import os import shutil import zipfile from glob import glob from time import sleep import tkinter as tk from tkinter import filedialog import re # GUI를 통한 파일 선택 def select_file(): file_path = filedialog.askopenfilename(filetypes=[('HWPX Files', '*.hwpx')]) if file_path: process_file(file_path) success_label.config(text="Success") def process_file(hwpx_file_path): # 압축 풀기 및 스타일 교체 extract(hwpx_file_path) convert_styles("temp/Contents/header.xml") # header.xml 파일에서 스타일을 교체 # 다시 압축하여 저장 with zipfile.ZipFile(hwpx_file_path.replace(".hwpx", "_Style_re.hwpx"), 'w', zipfile.ZIP_DEFLATED) as zipf: zipdir('temp', zipf) # 임시 폴더 삭제 shutil.rmtree('temp') print("파일 처리가 완료되었습니다.") def extract(path): os.chdir(os.path.dirname(path)) target_path = os.path.join(os.getcwd(), "temp") with zipfile.ZipFile(path, 'r') as zf: zf.extractall(path=target_path) def convert_styles(header_file_path): # header.xml에서 <hh:style> 부터 </hh:styles>까지의 내용을 사용자가 제공한 데이터로 교체 with open(header_file_path, "r", encoding="utf-8") as file: data = file.read() # <hh:style>부터 </hh:styles>까지 매칭하여 교체 new_styles = '''<hh:styles itemCnt="22"> <hh:style id="0" type="PARA" name="바탕글" engName="Normal" paraPrIDRef="0" charPrIDRef="0" nextStyleIDRef="0" langID="1042" lockForm="0"/> <hh:style id="1" type="PARA" name="본문" engName="Body" paraPrIDRef="1" charPrIDRef="0" nextStyleIDRef="1" langID="1042" lockForm="0"/> <hh:style id="2" type="PARA" name="개요 1" engName="Outline 1" paraPrIDRef="2" charPrIDRef="0" nextStyleIDRef="2" langID="1042" lockForm="0"/> <hh:style id="3" type="PARA" name="개요 2" engName="Outline 2" paraPrIDRef="3" charPrIDRef="0" nextStyleIDRef="3" langID="1042" lockForm="0"/> <hh:style id="4" type="PARA" name="개요 3" engName="Outline 3" paraPrIDRef="4" charPrIDRef="0" nextStyleIDRef="4" langID="1042" lockForm="0"/> <hh:style id="5" type="PARA" name="개요 4" engName="Outline 4" paraPrIDRef="5" charPrIDRef="0" nextStyleIDRef="5" langID="1042" lockForm="0"/> <hh:style id="6" type="PARA" name="개요 5" engName="Outline 5" paraPrIDRef="6" charPrIDRef="0" nextStyleIDRef="6" langID="1042" lockForm="0"/> <hh:style id="7" type="PARA" name="개요 6" engName="Outline 6" paraPrIDRef="7" charPrIDRef="0" nextStyleIDRef="7" langID="1042" lockForm="0"/> <hh:style id="8" type="PARA" name="개요 7" engName="Outline 7" paraPrIDRef="8" charPrIDRef="0" nextStyleIDRef="8" langID="1042" lockForm="0"/> <hh:style id="9" type="PARA" name="개요 8" engName="Outline 8" paraPrIDRef="18" charPrIDRef="0" nextStyleIDRef="9" langID="1042" lockForm="0"/> <hh:style id="10" type="PARA" name="개요 9" engName="Outline 9" paraPrIDRef="16" charPrIDRef="0" nextStyleIDRef="10" langID="1042" lockForm="0"/> <hh:style id="11" type="PARA" name="개요 10" engName="Outline 10" paraPrIDRef="17" charPrIDRef="0" nextStyleIDRef="11" langID="1042" lockForm="0"/> <hh:style id="12" type="CHAR" name="쪽 번호" engName="Page Number" paraPrIDRef="0" charPrIDRef="1" nextStyleIDRef="0" langID="1042" lockForm="0"/> <hh:style id="13" type="PARA" name="머리말" engName="Header" paraPrIDRef="9" charPrIDRef="2" nextStyleIDRef="13" langID="1042" lockForm="0"/> <hh:style id="14" type="PARA" name="각주" engName="Footnote" paraPrIDRef="10" charPrIDRef="3" nextStyleIDRef="14" langID="1042" lockForm="0"/> <hh:style id="15" type="PARA" name="미주" engName="Endnote" paraPrIDRef="10" charPrIDRef="3" nextStyleIDRef="15" langID="1042" lockForm="0"/> <hh:style id="16" type="PARA" name="메모" engName="Memo" paraPrIDRef="11" charPrIDRef="4" nextStyleIDRef="16" langID="1042" lockForm="0"/> <hh:style id="17" type="PARA" name="차례 제목" engName="TOC Heading" paraPrIDRef="12" charPrIDRef="5" nextStyleIDRef="17" langID="1042" lockForm="0"/> <hh:style id="18" type="PARA" name="차례 1" engName="TOC 1" paraPrIDRef="13" charPrIDRef="6" nextStyleIDRef="18" langID="1042" lockForm="0"/> <hh:style id="19" type="PARA" name="차례 2" engName="TOC 2" paraPrIDRef="14" charPrIDRef="6" nextStyleIDRef="19" langID="1042" lockForm="0"/> <hh:style id="20" type="PARA" name="차례 3" engName="TOC 3" paraPrIDRef="15" charPrIDRef="6" nextStyleIDRef="20" langID="1042" lockForm="0"/> <hh:style id="21" type="PARA" name="캡션" engName="Caption" paraPrIDRef="19" charPrIDRef="0" nextStyleIDRef="21" langID="1042" lockForm="0"/> </hh:styles>''' data = re.sub(r'<hh:styles.*?</hh:styles>', new_styles, data, flags=re.DOTALL) with open(header_file_path, "w", encoding="utf-8") as file: file.write(data) def zipdir(path, ziph): os.chdir(path) for root, dirs, files in os.walk("."): for file in files: ziph.write(os.path.join(root, file)) os.chdir("..") # GUI 설정 및 실행 root = tk.Tk() root.title("HWPX Style Converter v1.0") root.geometry("400x300") # 프로그램 제목 title_label = tk.Label(root, text="HWPX 파일 스타일 변경 프로그램", font=("Arial", 16)) title_label.pack(pady=10) # 파일 선택 지침 instruction_label = tk.Label(root, text="Please select an HWPX file.", font=("Arial", 10)) instruction_label.pack(pady=5) # 파일 선택 버튼 select_button = tk.Button(root, text="Select HWPX File", command=select_file) select_button.pack(pady=10) # 성공 메시지 success_label = tk.Label(root, text="", font=("Arial", 12), fg="green") success_label.pack(pady=20) # 하단 정보 표시 footer_label = tk.Label(root, text="Version 1.0V Developed by Hyunuk", font=("Arial", 8)) footer_label.pack(side="bottom", anchor="w", padx=10, pady=10) root.mainloop()
-
직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
역슬래쉬는 어떻게 찾나요?
역슬래쉬는 어떻게 찾나요?그리고 첨부한 이미지 처럼 smj02가 제 컴에는 없네요..
-
직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
처음입니다. 떨리네요
질문 남겨주셔서 감사합니다.막히면 언제든 무엇이든 자주 질문 던져주세요.수학/과학이나 알고리즘과는 달리업무자동화 코딩은 고민해서 풀리는 경우가 정말 드뭅니다.다시 말씀드리지만, 질문을 자주자주 남겨주세요.저도 최대한 빠르게 회신 드리겠습니다.당부드릴 두 가지가 있습니다.① 가급적 구체적으로 설명해주세요.② 특정 챕터 관련 질문 남겨주실 때는, 어느 챕터인지 알려주세요ㅜ====================================
-
직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
엑셀 자료를 복사해오면 생기는 문제
혹시 이런게 가능할런지요엑셀에서 만들어진 표를 복사해서 한글로 가지고 오면글자 배경으로 음영이 생긴다거나 한줄이 아래로 내려가 있거나 앞뒤로 띄어쓰기가 되어있는문제가 있습니다. 한글을 실행해놓고 보고서 작성을 하면서 표속에 커서를 넣고 파이썬으로 만든 exe 파일을실행하면 자동으로 수정해주는 자동화를 만들고 싶습니다.'승승아빠'라는 분이 한글 안에서 불러오는 매크로를 만들어주긴 했는데 이게 한글 버전별로 있어야하기도 하고 가끔 두행 진행되다 안되고 하더라구요언제 시간되시면 강의라도 부탁드립니다. 아니면 방향이라도 조언 부탁드립니다.
-
직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
실제 예제를 포함해서 문의를 드릴려고 하는데요, 이메일로 문의드릴 수 있을까요
강의와 블로그를 보고, 엑셀을 읽어와서 한글 누름틀에 입력하는 작업을 하고 있습니다.엑셀은 총 21개행이고, 누름틀 + 셀필드 = 24개로 구성되어 있습니다.누름틀 중 "임차료"만 10번까지만 입력되고 11번부터는 입력이 되지 않는데요이유를 알고 싶어 문의드릴려구요 엑셀에 업체명, 주소가 들어가 있어서요이메일로 문의를 드릴 수 있을까요? ^^ 답변부탁드립니다.
-
직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
사진도 셀필드를 활용해서 자동화가 가능한가요?
사진을 표에 넣는 경우가 많아서 자동화를 하고 싶습니다. 이 경우도 셀필드처럼 자동화가 가능한가요?
-
직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
한odt 문서 편집도 python으로 가능한가요?
안녕하세요.지금 python을 통해 hwp 문서 편집 강의를 유용하게 듣고 있습니다. 그런데 최근에 각종 공문서를 결재할 때 한odt 파일로 올리도록 하고 있어서요.. 한글파일로 작성 후 odt로 저장하게 되면 문서 포맷이 깨지는 경우가 많이 발생해 odt문서는 odt편집기로 작성하도록 하고 있습니다.혹시 odt도 hwp처럼 python으로 편집할 수 있는 모듈이 있을까요? 아무리 검색해도 잘 안나오는 것 같아 문의 드립니다.