์๋ ํ์ธ์?
์ผ์์์ฝ๋ฉ ๋ธ๋ก๊ทธ๋ฅผ ์ด์์ค์ธ ์ผ์ฝ์ ๋๋ค.
์ ๋ฌด์๋ํ์ ๊ด๋ จํ ์ฝํ ์ธ ์ ์ ๋ฐ ๊ฐ์ ๋ฑ์ ํ๊ณ ์์ต๋๋ค.
Courses
Reviews
- Essential Python-Hwp Automation Recipes for Office Workers
- Essential Python-Hwp Automation Recipes for Office Workers
- Essential Python-Hwp Automation Recipes for Office Workers
- Essential Python-Hwp Automation Recipes for Office Workers
- Essential Python-Hwp Automation Recipes for Office Workers
Posts
Q&A
ํน์ ์คํ์ผ์ ์ฐพ์ ์ด๋ํ๋ ๋ฐฉ๋ฒ
pyhwpx ๋ชจ๋ ์์ hwp.goto_style(์คํ์ผ์ด๋ฆ) ๋ฉ์๋๋ฅผ ์ถ๊ฐํด ๋์์ต๋๋ค.์ฌ์ฉ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ์ต๋๋ค. ํ๊ธ ๋ฌธ์๋ฅผ ์ด์ด ๋ ์ํ์์ ์คํํ์๋ฉด ๋ฉ๋๋ค.์๋ ์ฝ๋๋ ๋ฌธ์ ์ ์ฒด์์ "๊ฐ์ 1" ์คํ์ผ๋ง ๋ชจ๋ ์ฐพ์๋ค๋๋ฉด์๋์ " :"์ ๋ถ์ด๋ ์ฝ๋์ ๋๋ค.from pyhwpx import Hwp hwp = Hwp() hwp.MoveDocBegin() while hwp.goto_style("๊ฐ์ 1"): hwp.MoveParaEnd() hwp.insert_text(" :")(์ฌ์ง)๋์์ด ๋์๊ธธ ๋ฐ๋๋๋ค^^
- 1
- 2
- 25
Q&A
ํ์ฌ ์ปค์ ๋ฌธ๋จ์ ์๋ฌด๋ฐ ๋ด์ฉ์ด ์๋์ง ํ์ธํ๊ธฐ
์๋ ํ์ธ์!pyhwpx ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ hwp.is_empty_para()๋ผ๋ ๋ฉ์๋๊ฐ ์์ต๋๋ค. ๋น ๋ฌธ๋จ์ธ ๊ฒฝ์ฐ True๋ฅผ ๋ฆฌํดํฉ๋๋ค.์ฌ์ฉ๋ฐฉ๋ฒ์, ํด๋น ํ/๊ธ ํ์ผ์ ์ด์ด๋์ ์ํ์์ vscode ์ฃผํผํฐ๋ ธํธ๋ถ์์para = 0 while hwp.set_pos(0, para, 0): if hwp.is_empty_para(): hwp.set_style("๊ฐ์ 1") para += 1์ด๋ฐ ์์ผ๋ก ์คํํด๋ณด์๋ฉด ๋ ๋ฏ ํฉ๋๋ค.๋ง์ฝ, ๋ณธ๋ฌธ ๋น ๋ฌธ๋จ์ "๊ธ์์ฒ๋ผ ์ทจ๊ธ"์ด ๊บผ์ง ๊ทธ๋ฆผ์ด๋ ํ์ ์ปจํธ๋กค์ด ๋ค์ด์๋ ๊ฒฝ์ฐ์๋ ์คํ์ผ ๋ณ๊ฒฝ์ด ๋์ง ์์ต๋๋คใ
- 1
- 1
- 31
Q&A
์คํฌ๋ฆฝํธ ๋งคํฌ๋ก ์ด๊ธฐํ ํ๊ณ ์ถ์ต๋๋ค.
kun๋ ์๋ ํ์ธ์?1. ์๋์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ฐํํ๋ฉด ๊ฐ๋ฅํฉ๋๋ค. ์๋์ํ๊ธ ํ๋ก๊ทธ๋จ์ ํตํด ํด๋น ํ์ผ์ hwpx ํฌ๋งท์ผ๋ก ์ ์ฅํ๋ค.ํ์ฅ์๋ฅผ zip์ผ๋ก ๋ฐ๊พธ๊ณ ์์ถ์ ํด์ ํ๋ค.Scripts ํด๋์ sourceScripts ํ์ผ์ ์ญ์ ํ๋ค.๋ค์ zip ํฌ๋งท์ผ๋ก ์์ถํ ํ, ํ์ฅ์๋ฅผ hwpx๋ก ๋ฐ๊พผ๋ค.๋ค์ ์๋์ํ๊ธ ํ๋ก๊ทธ๋จ์ ํตํด ์๋ ํฌ๋งท์ผ๋ก ๋ณํํ๋ค. 2. ํ์ ์ ๋์ฐ์ง ์๋ ๋ฐฉ๋ฒ์ ํด๋น ํ์ ์ [Y/N] ํ์ ์ผ๋ก hwp.SetMessageBoxMode(0x20)์ฝ๋๋ฅผ ๋ฏธ๋ฆฌ ์คํํ์ฌ "No"๋ฅผ ์๋์ ํํ ์ ์์ต๋๋ค. ํ์ด์ฌ์ผ๋ก๋ zipfile ๋ฑ์ ๋ชจ๋๋ก ์์ถํด์ ๋ฐ ์์ถ์ ๋ฌธ์ ์์ด ํด๊ฒฐ์ด ๋จ์ ํ์ธํ์์ต๋๋ค. ์๋๋ ํ๋ค๋ฅ ์์ฑํด๋ณธ ๊ด๋ จ ์ฃผํผํฐ๋ ธํธ๋ถ ํ์ผ์ ๋๋ค.๋ฌธ์์คํฌ๋ฆฝํธ๋ฅผ ์ ๊ฑฐํ hwp ํ์ผ๋ค์ด ์๋ ํด๋ ์์ ๋ฃ๊ณ ์ ํ๋์ฉ ์คํํ์๋ฉด ๋ฉ๋๋ค. [๋ ธํธ๋ถ ํ์ผ] ์ถ๊ฐ ๋ฌธ์ ์์ผ์๋ฉด ์์ ๋กญ๊ฒ ๋๊ธ ๋จ๊ฒจ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.ํ๋ณตํ ํ๋ฃจ ๋์ธ์^^
- 1
- 2
- 112
Q&A
ํ์์ ํน์ ํ๋์ ์๋ ์ด๋ฏธ์ง๋ฅผ ๋ณต์ฌํ์ฌ ํ๊ธ ์ธ๋ถ์ ์ ์ฅํ๊ธฐ
ํน์ "๋ณต์ฌ"๋ ๊ฒ ํ์ผ๋ก ์ ์ฅํ๊ธฐ๋ฅผ ๋ง์ํ์๋ ๊ฑด๊ฐ์?ํน์ ๋ค๋ฅธ ๋ฌธ์์ ๋ถ์ฌ๋ฃ๊ธฐํ๊ฑฐ๋ "ํด๋ฆฝ๋ณด๋"๋ก ๋ณต์ฌํ๋ ๋ฑ ๋ค๋ฅธ ์์ ์ด๋ผ๋ฉด ์ถ๊ฐ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์ใ ์ฐ์ ์ ํด๋น ํ/๊ธ ๋ฌธ์๋ฅผ ์ด์ด๋์ ์ํ๋ก์๋ ์ฝ๋๋ฅผ ์คํํด์ ์๋์ํ๊ธ์ ์คํํด์ค๋๋ค.from pyhwpx import Hwp hwp = Hwp()์ฐ์ , ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๋ ค๋ฉด ์ด์ฐ๋๋ "์ฐพ์๊ฐ์", "์ ์ฅ" ํด์ผ ํฉ๋๋ค.๋คํํ ๊ฐ๊ฐ ์ ํ๋๊ฐ ์๋ค๊ณ ํ์๋โ hwp.move_to_field("์ด๋ฏธ์ง๊ฐ๋ค์ด์๋ํ๋๋ช ")์ ์คํํ์ ์ ํ๋๋ก ์ปค์๋ฅผ ์ฎ๊ธฐ์ ํ์,โก hwp.SelectCtrlFront()๋ช ๋ น์ด๋ก ์ด๋ฏธ์ง๋ฅผ ์ ํํฉ๋๋ค. (์ ํ๋์ ์ด๋ฏธ์ง ํ๋๋ผ๋ฉด ์ฌ์ค โก๋ ์๋ตํ์ ๋ ๋ฉ๋๋ค.)โข hwp.save_image(f"./{ํ๋๋ช }.png") ๋ช ๋ น์ด๋ก ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํฉ๋๋ค. ๋ง์ฝ์ ํด๋ฆฝ๋ณด๋๋ก ๋ณต์ฌํ์๊ฒ ๋ค๋ฉด hwp.save_image ๋์ hwp.Copy()๋ฅผ ์คํํ์๋ฉด ๋๊ณ , ๋ค๋ฅธ ๋ฌธ์์ ๋ถ์ฌ๋ฃ์ผ์๋ ค๋ฉด hwp.Copy() ๋์ ์๋์ฒ๋ผ # ์ ์ฝ๋๋ก ์ด๋ฏธ์ง๋ฅผ ์ ํํ ์ํ์์ img = hwp.GetTextFile("HWP", option="saveblock:true") # ๋ถ์ฌ๋ฃ๊ธฐํ ๋ฌธ์์ ์ ์ ์ปค์๋ฅผ ๋ ์ฑ๋ก hwp.SetTextFile(img, "HWP")์ด๋ฐ ์์ผ๋ก ํด๋ฆฝ๋ณด๋๋ฅผ ์ฐ์ง ์๊ณ , ๋ฌธ์์ด๋ก ๋ถ์ฌ๋ฃ๊ธฐ๋ ๊ฐ๋ฅํฉ๋๋ค. ํน์ ์ถ๊ฐ์ง๋ฌธ ์์ผ์๋ฉด ๋๊ธ์ ๋จ๊ฒจ์ฃผ์ธ์.์ ๊ฐ ๋ค์ ๋ง์ฐํ๊ฒ ์ดํดํ ๋ถ๋ถ์ด ์๋ ๊ฒ ๊ฐ์์^^;๋ง์ฐํ ์ค๋ช ์ ๋ถ์ด๊ธฐ๋ณด๋ค๋, ์ถ๊ฐ๋๊ธ์ ์ฝ๊ณ ๊ตฌ์ฒด์ ์ผ๋ก ํ์ ์ ๋๋ฆฌ๊ฒ ์ต๋๋ค. ํ๋ณตํ ํ๋ฃจ ๋์ธ์!!!~
- 1
- 2
- 111
Q&A
ํ์์ ์ฌ๋ฌ ํด๋ ์ค ํน์ ํด๋์ ์ฌ์ง๋ง ์ถ์ถํ๊ธฐ
์๋ ํ์ธ์?์ด๋ ค์ด ์ฝ๋๋ ์๋์ง๋ง, ๋ ๊ฐ์ง ์ฃผ์ ๋ก ๋ถ๋ฆฌํด์ ์ค๋ช ์ ๋๋ ค์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค. โ ํ์ ํด๋์ ๋ชจ๋ ํ์ผ๊ณผ ๊ฒฝ๋ก๋ฅผ ํ์ด์ฌ์ผ๋ก ๊ฐ์ ธ์ค๊ธฐํ์ฌ ํด๋์ ํ์ผ์ด๋ ํด๋ ๋ชฉ๋ก์ os.listdir() ๋ก ๊ฐํธํ๊ฒ ๊ตฌํ ์ ์์ง๋ง,ํ์ ํด๋์ ํ์ผ ๋ชฉ๋ก๊น์ง ํ ๋ฒ์ ๊ตฌํ๊ณ ์ถ์ผ์๋ค๋ฉด os.walk() ๋ผ๋ ํจ์๋ฅผ ์ฐ์๋ ๊ฒ์ดํจ์ฌ ๊ฐํธํฉ๋๋ค. ์๋ฅผ ๋ค์ด ํ์ํด๋์ ํ์ผ๋ชฉ๋ก์ด ์๋์ ๊ฐ์ ๋(์ฌ์ง) ์๋์ ๊ฐ์ ํจ์๋ฅผ ์ ์ํ์ฌ ์คํํ๋ฉด(๊ฒฝ๋ก๋ช ํค๋ฅผ ๊ฐ์ง dict๋ฅผ ์ ์ํ์ต๋๋ค. ๊ฐ ๊ฐ์ ํด๋น ๊ฒฝ๋ก์ jpg ํ์ผ์ ์ ๋๊ฒฝ๋ก ๋ฆฌ์คํธ์ ๋๋ค.)import os def get_jpg_files_by_directory(root_dir="."): jpg_dict = {} for dirpath, _, filenames in os.walk(root_dir): jpg_files = [os.path.abspath(os.path.join(dirpath, f)) for f in filenames if f.lower().endswith(".jpg")] if jpg_files: # ํ์ผ์ด ์๋ ํด๋๋ง ์ถ๊ฐ jpg_dict[dirpath] = jpg_files return jpg_dict๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ์ต๋๋ค.>>> jpg_files_dict = get_jpg_files_by_directory() >>> print(jpg_files_dict) { '.\\sub1': [ 'C:\\Users\\user\\Desktop\\์ฝํ ์ธ ์์ \\์ด๋ฏธ์ง๊ฒฝ๋ก\\sub1\\A-1.jpg', 'C:\\Users\\user\\Desktop\\์ฝํ ์ธ ์์ \\์ด๋ฏธ์ง๊ฒฝ๋ก\\sub1\\A-2.jpg', 'C:\\Users\\user\\Desktop\\์ฝํ ์ธ ์์ \\์ด๋ฏธ์ง๊ฒฝ๋ก\\sub1\\A-3.jpg' ], '.\\sub1\\sub2': [ 'C:\\Users\\user\\Desktop\\์ฝํ ์ธ ์์ \\์ด๋ฏธ์ง๊ฒฝ๋ก\\sub1\\sub2\\B-1.jpg', 'C:\\Users\\user\\Desktop\\์ฝํ ์ธ ์์ \\์ด๋ฏธ์ง๊ฒฝ๋ก\\sub1\\sub2\\B-2.jpg', 'C:\\Users\\user\\Desktop\\์ฝํ ์ธ ์์ \\์ด๋ฏธ์ง๊ฒฝ๋ก\\sub1\\sub2\\B-3.jpg' ], '.\\sub1\\sub2\\sub3': [ 'C:\\Users\\user\\Desktop\\์ฝํ ์ธ ์์ \\์ด๋ฏธ์ง๊ฒฝ๋ก\\sub1\\sub2\\sub3\\C-1.jpg', 'C:\\Users\\user\\Desktop\\์ฝํ ์ธ ์์ \\์ด๋ฏธ์ง๊ฒฝ๋ก\\sub1\\sub2\\sub3\\C-2.jpg', 'C:\\Users\\user\\Desktop\\์ฝํ ์ธ ์์ \\์ด๋ฏธ์ง๊ฒฝ๋ก\\sub1\\sub2\\sub3\\C-3.jpg' ], '.\\sub1\\sub2\\sub3\\sub4': [ 'C:\\Users\\user\\Desktop\\์ฝํ ์ธ ์์ \\์ด๋ฏธ์ง๊ฒฝ๋ก\\sub1\\sub2\\sub3\\sub4\\D-1.jpg', 'C:\\Users\\user\\Desktop\\์ฝํ ์ธ ์์ \\์ด๋ฏธ์ง๊ฒฝ๋ก\\sub1\\sub2\\sub3\\sub4\\D-2.jpg', 'C:\\Users\\user\\Desktop\\์ฝํ ์ธ ์์ \\์ด๋ฏธ์ง๊ฒฝ๋ก\\sub1\\sub2\\sub3\\sub4\\D-3.jpg' ] } ์์ ๊ฐ์ ๋ฐ์ดํฐ๊ตฌ์กฐ๋ฅผ ๋ง๋ค๋ฉด,ํ์๊ฒฝ๋ก๋ณ๋ก ๊ฐ๊ฐ์ key๊ฐ ์๊ณ ๊ทธ ์์ ๊ฐ์ผ๋ก jpgํ์ผ ๋ฆฌ์คํธ๊ฐ ์์ผ๋ฏ๋ก์์ฐจ์ ์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ์ฝ์ ํ๊ธฐ ์ฝ์ต๋๋ค. (๋ฌผ๋ก ๋ ํจ์จ์ ์ธ ์ข์ ๋ฐฉ๋ฒ์ด ์์ ์๋ ์์ต๋๋ค.) โก ์๋์ํ๊ธ์ ์ด๋ฏธ์ง ๋ฃ๊ธฐ์๋์ํ๊ธ API๊ฐ ๋ค์ ๋ณต์กํ๋ฏ๋ก, ์ ๋ ์ต๊ทผ์ ๊ฑฐ์ ํญ์ pyhwpx ๋ชจ๋์ ์ด์ฉํด์๊ฐ๋จํ ๋ช ๋ น์ด๋ค์ ์ฒ๋ฆฌํ๊ณ ์์ต๋๋ค.pyhwpx ๋ชจ๋์ ๋ํ ๊ตฌ์ฒด์ ์ธ ์ค๋ช ์ ์ํค๋ ์ค(๋งํฌ)์์ ํ์ธํ์ค ์ ์์ต๋๋ค. pyhwpx์์๋hwp.create_table(rows, cols, treat_as_char)๋ก ๊ฐํธํ๊ฒ ํ๋ฅผ ์์ฑํ๊ณ ,hwp.insert_picture(img) ๋ฉ์๋๋ก ์ ์์์ ์ด๋ฏธ์ง๋ฅผ ์ฝ์ ํ์ค ์ ์์ต๋๋ค. ์๋๋ pyhwpx๋ฅผ ํตํด ์ ์ด๋ฏธ์ง ๋ชฉ๋ก์ ๊ฐ๋จํ hwp ํ์ผ์ ์ฝ์ ํ๋ ์์์ฝ๋์ ๋๋ค.(์ฌ์ง)for k in jpg_files_dict.keys(): hwp.set_font(Height=25) # ๊ธ์ํฌ๊ธฐ๋ฅผ 25๋ก hwp.insert_text(k) # ๊ฒฝ๋ก๋ช ์ฝ์ hwp.BreakPara() # ์ํฐ hwp.create_table(rows=1, cols=1, treat_as_char=True) # 1x1์ ๊ธ์์ทจ๊ธํ ์์ฑ for img in jpg_files_dict[k]: # ๊ฒฝ๋ก๋ช ํค๋ฅผ ์ํํ๋ฉด์ hwp.insert_picture(img) # ๊ฒฝ๋ก ๋ด์ jpgํ์ผ ์ฝ์ hwp.TableAppendRow() # ์๋์ ์ ์ ์์ฑ hwp.Run("TableSubtractRow") # ๋ง์ง๋ง์ ์์ฑ๋ ๋น ์ ์ ์ ๊ฑฐ hwp.MoveDown() # ํ ์๋๋ก ๋ด๋ ค๊ฐ์ hwp.BreakPage() # Ctrl-Enter(ํ์ด์ง ๋๋๊ธฐ)์ด๋ฐ ์์ผ๋ก ํ์ฉํ์ค ์ ์์ต๋๋ค.๋ผ์ธ๋ณ ์ฃผ์์ ์ฐธ๊ณ ํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค. ์์ ํ์ผ์ ๊ฒฝ๋ก๊ฐ ๋ช ์๋์ด ์๋ค๋ฉด ํด๋น ์์ ํ์ผ์ ํ๋ค์ค ๋ฑ์ผ๋ก ๊ฐ์ ธ์ค์ ์os.walk๋ ์ dict ์๋ฃ ๋์ ํ์ฉํ์๋ฉด ๋ ๊ฐํธํ ๊ฒ์ ๋๋ค.๋ถ๋ ๋์์ด ๋์๊ธธ ๋ฐ๋๋๋ค. ์ถ๊ฐ ์ง๋ฌธ์ ๋๊ธ๋ก ๋จ๊ฒจ์ฃผ์ธ์.์ฌ์ค, ์ง๋ฌธ์ด ์กฐ๊ธ ๋๋ฃจ๋ญ์คํ ๋๋์ ๋๋ค. ์ํ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด ํ์คํ๊ฒ ์ฝ๋๋ก ๋ณด์ฌ๋๋ฆด ์ ์๋๋ฐ,์์๊ฒ ์ง๋งใ ์ ๊ฐ ๋๋ํ ํธ์ด ์๋์ด์ใ ใ ใ ์ง๋ฌธ ์์ฒด๋ฅผ ์ดํดํ๋ ๊ฒ๋ ์๋นํ ์๋์ง๊ฐ ํ์ํ๋ค์ใ ํ๋ณตํ ํ๋ฃจ ๋ณด๋ด์๊ธฐ ๋ฐ๋๋๋ค!
- 1
- 2
- 174
Q&A
๋๋ฆํ ์ ์ฉํญ๋ชฉ vs ์์ ํญ๋ชฉ ๊ฐ์ ์์๊ด๋ จ ์ง๋ฌธ
ํ์ฐ๋ ์๋ ํ์ธ์!!ใ ์ฐํด์๋ ์ด๋ ๊ฒ ์ด์ฌ์ด์ ๊ฑธ ๋ณด๋ฉด, ๋ณดํต ๋ถ์ด ์๋์ ๋ฐ์?ใ ์ง๋ฌธ์ ๋ต๋ณ์ ๋จผ์ ๋๋ฆฌ๋ฉด,ํ๋์ ๋ฉ์ผ๋จธ์ง๋ ๊ต์ฅํ ์ ์ฌํ๊ฒ ์๋ํฉ๋๋ค. ๋ค๋ง, ์์ ์์ ๊ฐ์ ๊ฐ์ ธ์ฌ ๋, ์นผ๋ผ๋ช ์ ๋นผ๊ณ ๊ฐ๋ง ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ์๋๋ง์ํ์ ๊ฒ์ฒ๋ผ, ์๋ํ ์ ์์ต๋๋ค. ์ด๋ฏธ ๋ฉ์ผ๋จธ์ง๋ฅผ ํตํด ๊ฐ์ ์ ๋ ฅํ๋ ๊ฐ๋ ์ ์ ์๊ณ ๊ณ์๋์ ๋ฅผ ํฌํจํ์ฌ ๋ง์ ์ ๋ฌด์๋ํ ์ ๋ฌธ๊ฐ๋ค์ด ์ฆ๊ฒจ ์ฌ์ฉํ๋๊ฐํธํ ๋ฐฉ๋ฒ์ ํ๋ ๋ฏธ๋ฆฌ ์๋ ค๋๋ฆฌ๊ณ ์ ํฉ๋๋ค.๊ฐ์์์ ์๋ ค๋๋ฆฐ ์ฝ๋๋ ๋ฐ๋ฐ๋ฅ๊น์ง ์ง์ ๊ตฌํํ ๊ด๊ณ๋ก ๊ต์ฅํ ๋ณต์กํ๋ฐ์,์๋ฆฌ๋ง ์ดํดํ์๋ฉด ๋ฉ๋๋ค. ์ค์ ๋ก๋ ์ด๋ ๊ฒ ๋ณต์กํ๊ฒ ์ฝ๋ฉํ์ง ์์ต๋๋คใ ์ฃ์ก ์ฐ์ ์ pywin32๋ฅผ ์ค์นํ์ จ๋ ๊ฒ๊ณผ ๋์ผํ๊ฒ,ํฐ๋ฏธ๋์์ pip install pyhwpx ๋ช ๋ น์ด๋ก pyhwpx ๋ชจ๋์ ์ค์นํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.(์ฌ์ง)ํน์ ์ฃผํผํฐ๋ ธํธ๋ถ์ ์๋ฌด ์ ์์%pip install pyhwpx๋ผ๊ณ ํ ๋ฒ๋ง ์คํํ์ ๋ ๋ฉ๋๋ค. ์ค์น๋ฅผ ์๋ฃํ์ จ์ผ๋ฉด, ๋ค์ ์ฃผํผํฐ๋ ธํธ๋ถ์ผ๋ก ๋์๊ฐ์ ์๊ธฐ์กด์ ์ ๋ ฅํ์ จ๋ ์๋ ์ฝ๋๋ฅผ ์คํํ์ง ๋ง์๊ณ import win32com.client as win32 hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject") hwp.XHwpWindows.Item(0).Visible = True hwp.RegisterModule("FilePathCheckDLL", "FilePathCheckerModule") ์๋์ ์ฝ๋๋ฅผ ๋์ ์คํํด๋ณด์๊ธฐ ๋ฐ๋๋๋ค.from pyhwpx import Hwp hwp = Hwp()์ด๋ ๊ฒ ์๋์ํ๊ธ์ ์คํํด๋ ๋๋ถ๋ถ์ ์ฝ๋๋ ๋์ผํ๊ฒ ์ฌ์ฉํ์ค ์ ์์ง๋ง,hwp.PutFieldText์ ์๋๋ฐฉ์์ด ๋ ๊ฐํธํด์ง๊ณ ,hwp.open ์คํ์, ์ ์ฒด๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํ์ง ์์๋ ๋๋ ๋ฑ๋ช ๊ฐ์ง ๊ธฐ๋ฅ๋ณด์ ๋ฐ ํธ์๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์ด ์์ต๋๋ค. ๊ทธ๋ผ pyhwpx์ PutFieldText ํ์ฉ์์๋ฅผ ๋ช ๊ฐ์ง ๋ณด์ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค. 1. ์์ ํ์ผ ๊ทธ๋๋ก ์ฝ์ ๋ง์ฝ ์ฝ์ ํ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์๋ ์์ ํ์ผ์ด ๊น๋ํ๊ฒ ๋ฉ์ผ๋จธ์ง ํํ๋ก ์ ๋ฆฌ๋์ด ์๋ ๊ฒฝ์ฐhwp.PutFieldText(์์ ํ์ผ๋ช )์ ์คํํ๋ฉด ์์ ์ ๊ฐ์ด ํ๋ ์์ ๊ณ ์ค๋ํ ๋ค์ด๊ฐ๊ฒ ๋ฉ๋๋ค.(์ฌ์ง)์ง๋ฌธ ์ฃผ์ จ๋ ๊ฒ์ฒ๋ผ, ์์ ๋ฌธ์ B์ด์ ์ฌ์ด์ "๋ณ๋ช " ์นผ๋ผ์ด ๋ผ์ด ์์ง๋ง, ํ๋์ "๋ณ๋ช "์ด ์์ผ๋ฏ๋ก ๋๋ฝ๋์์ต๋๋ค.์ด ๋ฐฉ๋ฒ์ด ์ ์ผ ๊ฐํธํ๋ค๋ฉด ๊ฐํธํ์ง๋ง, ํ์ด์ฌ ๋จ์์ ์กฐ๊ธ๋ ๊ฐ์ ์์ ํ ์ ์์ผ๋ฏ๋ก๋ฏธ๋ฆฌ ์์ ํ์ผ ์์ ๋ชจ๋ ๊ฐ์ด ์๋ฒฝํ๊ฒ ์์ฑ๋์ด ์์ด์ผ ํฉ๋๋ค. 2. ์์ ํ์ผ์ ํ๋ค์ค๋ฐ์ดํฐํ๋ ์์ผ๋ก ๋ถ๋ฌ์จ ํ ์ฝ์ ๊ธฐ์ ํ์ด์ฌ์ ์์ํ์ จ๋ค๋ฉด, ๊ผญ pandas๋ฅผ ๊ณต๋ถํด๋ณด์๋ ๊ฑธ ๊ฐ๋ ฅํ ์ถ์ฒ๋๋ฆฝ๋๋ค.์์ ํ์ผ์ ๋ค๋ฃจ๋ ๊ฒ๋ฟ๋ง ์๋๋ผ, ๊ต์ฅํ ๋ฐฉ๋ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฏ๋ก๋น๋จ ์๋์ํ๊ธ์ด๋ ์์ ์ ๋ฌด์๋ํ ๋ฟ๋ง ์๋๋ผ ํต๊ณ๋ ์ฐจํธ, ๊ฐ์ข ๋ถ์ ๋ฑ ๊ณ ๊ธ ์ ๋ฌด์๊ณต๋ถ์๊ฐ์ด ์๊น์ง ์์ ๋งํผ ํ์ฉํ์ค ์ ์๋, ํ์ด์ฌ์ ๊ฐ์ฅ ์ธ๊ธฐ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋์ ๋๋ค.ํ์ฌํผ, ์์ ํ์ผ์ ํ๋ค์ค ๋ฐ์ดํฐํ๋ ์์ผ๋ก ๋ถ๋ฌ์์๊ฐ๊ณต์ ๊ฑฐ์น ํ ์ฝ์ ๋ ๊ฐ๋ฅํฉ๋๋ค.import pandas as pd df = pd.read_excel("์์ ํ์ผ.xlsx") # ๋ฐ์ดํฐํ๋ ์ ์์ฑ df["ํน๊ธฐ"] = df["ํน๊ธฐ"] + "๋ด๊ธฐ" hwp.PutFieldText(df)(์ฌ์ง)์ด๋ฐ ๋ฐฉ์์ผ๋ก ์์ ํ์ผ๊ฒฝ๋ก ๋ฌธ์์ด ๋์ ๋ฐ์ดํฐํ๋ ์(df) ๊ฐ์ฒด๋ฅผ ์ง์ ์ง์ด๋ฃ์ ์๋ ์์ต๋๋ค. ๋ง์ฝ, ํ๋๊ฐ ํ๋๋ง ์๊ณ , ๋ฐ์ดํฐํ๋ ์์์ ํน์ ํ๋ง ๋ฃ๊ณ ์ถ์ ๊ฒฝ์ฐ๋ ์๋์ฒ๋ผ ์คํํ์๋ฉด ๋ฉ๋๋ค.hwp.PutFieldText(df.iloc[[2]])(์ฌ์ง) iloc ํ์ฉ๋ฐฉ๋ฒdf.iloc ๋ "๋ฐ์ดํฐํ๋ ์์ i๋ฒ์งธ location"์ด๋ผ๋ ๋ป์ ๋๋ค.i๋ฒ์งธ ํ์ ๋ฐ์ดํฐ๋ง ๊ณจ๋ผ์ ๋ฃ๊ฒ ๋ค๋ ๋ป์ ๋๋ค. ์ด๊ฒ ๊ต์ฅํ ์ ์ฉํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ์.๋ฉ์ผ๋จธ์ง๋ก๋ ์์ ์ ํ ํ๋ํ๋๋ฅผ ๋ณ๋์ ํ์ผ๋ก ์ ์ฅํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ํ์ด์ฌ์ผ๋ก๋ ์ข ๋ ์ธ๋ถ์ ์ธ ์์ค์์ ํ๋๋ฅผ ๋ค๋ฃฐ ์ ์์ผ๋ฏ๋ก,์๋ฅผ ๋ค์ด ์์ ํ์ด 500๊ฐ๊ฐ ์๋ค๊ณ ํ ๋, 500๊ฐ์ ํ์ผ์ ๋ณ๋๋ก ์์ฑํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค.์๋์ฒ๋ผ for๋ฌธ ์์์ ์คํํ์๋ฉด ๋ฉ๋๋ค.for i in range(len(df)): hwp.PutFieldText(df.iloc[[i]]) hwp.SaveAs(f"{df["์ด๋ฆ"][i]}.hwp")(์ฌ์ง) ์์ ํ์ผ๊ฒฝ๋ก๋ df ๋ฟ๋ง ์๋๋ผ,ํ์ด์ฌ์ ๋ฆฌ์คํธ๋ ๋์ ๋๋ฆฌ, ํน์ ๋์ ๋๋ฆฌ์์ ๋ฆฌ์คํธ ์๋ฃํ๋๋์ผํ๊ฒ pyhwpx์ PutFieldText ๊ธฐ๋ฅ์ ํตํด ์ฝ์ ๊ฐ๋ฅํ๋ฏ๋ก์๋ง ์๊ฐํ์๋ ๊ฑฐ์ ๋ชจ๋ ์์ ์ ํ๋๋ฅผ ํตํด ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ์๊ฐ๋ฉ๋๋ค. ์ฒ์ ์ง๋ฌธ ์ฃผ์ จ๋, "ํน์ ์นผ๋ผ๋ง ๊ณจ๋ผ์ ํ๋์ ์ฝ์ " ํ๋ ๊ธฐ๋ฅ์win32com์ผ๋ก ๊ตฌํํ๊ธฐ์๋ ๊ต์ฅํ ๊น๋ค๋ก์ด ๋ถ๋ถ์ด ์๋๋ฐ๋ฐ์ดํฐํ๋ ์์ด๋, PutFieldText์ ๋ด์ฅ๊ธฐ๋ฅ์ ํ์ฉํ๋ฉด์ด๋ ๊ฒ ๊ฐํธํ๊ฒ๋ ๊ตฌํํ ์ ์๋ค๋ ์ ์ ๋ณด์ฌ๋๋ฆฌ๊ณ ์ถ์์ต๋๋ค.๋ต๋ณ์ด ๋์์์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค^^;; ํ์ฌํผ ์ง๋ฌธ ์ฃผ์ จ๋ ๊ฒ์ฒ๋ผ, ํน์ ์นผ๋ผ์ ๋ฐฐ์ ํ๋ ค๋ฉด๋์ ๋๋ฆฌ ์๋ฃํ์ผ๋ก ์ถ์ถ์ ํด์, ํน์ ์นผ๋ผ๋ช ์ ๋ฐฐ์ ํ๊ฑฐ๋์๋๋ฉด ์ฒ์๋ถํฐ ํน์ ์นผ๋ผ์ ๋นผ๊ณ ๋ฆฌ์คํธ๋ก ๋ง๋ค๊ฑฐ๋........ํ์ฌํผ ์๋นํ ๊น๋ค๋กญ์ต๋๋คใ ๋งค๋ฒ ์ด๊ฑธ ์ฝ๋ฉํ๊ธฐ๋ ์ด๋ ต๊ณ ์. ๊ฐ๊ธ์ ์์ ์ ์๋๋ฆฐ ๋ฐฉ์์ ํ ๋ฒ ๊ฒํ ํด๋ณด์๊ณ ์ค๋ฌด์ ์ ์ฉํ์๋ ๊ฑธ ์ถ์ฒ๋๋ฆฝ๋๋ค. ๋ ์๋ํํ์๋ฉด์, ํน์ ์๋ํํ์๊ณ ์ ํ๋ ์ ๋ฌด ๊ด๋ จํ์ฌ ์ง๋ฌธ์ด ์์ผ๋ฉด์ธ์ ๋ ํธํ๊ฒ ์ถ๊ฐ์ง๋ฌธ ๋จ๊ฒจ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค!!!! ๊ฐ์ฌํฉ๋๋ค. ๋จ์ ์ฐํด ์ ๋ณด๋ด์๊ธฐ ๋ฐ๋๋๋ค.ํ๋ณตํ ํ๋ฃจ ๋์ธ์^^
- 1
- 2
- 187
Q&A
pyinstaller ๋ก exe ํ์ผ์ ๋ง๋ค๋ฉด ํ๊ฒฝ๊ตฌ์ถ์ด ์๋์ด์๋ PC ์์ ์คํ ๋ถ๊ฐ
sam๋, ์๋ ํ์ธ์! ๋ฐ๊ฐ์ต๋๋ค^^ํ์ ์ด ์กฐ๊ธ ๋ฆ์์ต๋๋ค ์ฃ์กํฉ๋๋ค ํ์ฌ ์ด ๋ถ๋ถ ๋๋ฌธ์ ์ฝ๋๋ฅผ ์์ ๋ด์ผ ํ๋๋ฐใ ์์ง ์งํ์ ๋ชป ํ๊ณ ์์ต๋๋ค.๊ธํ๋๋ก ์ต์ ์ ์ด ๋์ง ์๋ ๋ฐฉ๋ฒ์ ์๋ ค๋๋ ค๋ด ๋๋ค.๋จผ์ ๋ฐํ๋ ๊ฒ์, ์ต์ ์ ์ ๋ณด์๋ชจ๋ ๋ฑ๋ก ๋๋ฌธ์ ๋ฐ์ํ๊ณ ์์ต๋๋คใ ใ ใ ใ ์ฃ์กํฉ๋๋ค. โ pyinstaller ์คํ์ ๋ฐ์ด๋๋ฆฌ ์ฒจ๋ถ์ปดํ์ผํ์ค ๋ FilePathCheckerModule.dll ํ์ผ์ ์์ค์ฝ๋์ ๋์ผํ ํด๋์ ๋ณต์ฌํ์ ํ--add-binary="filePathCheckerModule.dll:." ์ต์ ์ ์ถ๊ฐํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.์๋ฅผ ๋ค๋ฉด ์๋์ฒ๋ผ์.pyinstaller -F -w --add-binary="FilePathCheckerModule.dll:." source.py โก FilePathCheckerModule.dll ํ์ผ ๋๋ด์ ๋ฐฉ๋ฒ์ผ๋ก๋ ๊ฐํน ์ค๋ฅ๊ฐ ๋๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. (๊ถํ๋ฌธ์ ์ผ๊น์? ์์ธ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋คใ )๊ทธ๋ฐ ๊ฒฝ์ฐ์๋ FilePathCheckerModule.dll ํ์ผ์ ์คํํ์ผ๊ณผ ๊ฐ์ด ๋ฐฐํฌํด๋ณด์๊ธฐ ๋ฐ๋๋๋ค.๋ง์ฝ ๋๋ดํ์ฌ ๋ฐฐํฌํ์์๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๋ฉด, ์ฌ์ฉ์ ํด๋(์๋ฅผ ๋ค์ด c:\Users\User\ )์๋ค FilePathCheckerModule.dll ํ์ผ์ ๋ณต์ฌํด๋ณด์ธ์.ํ์ง๋ง ๋~~๋ถ๋ถ์ ๊ฒฝ์ฐ์๋ โ ๋ฒ ๋ฐฉ๋ฒ์ผ๋ก ํด๊ฒฐ๋ ๊ฒ์ ๋๋ค. โข ๊ทน๋จ์ ์ธ ๋ฐฉ๋ฒ : ๋ณด์๋ชจ๋ ๋ฑ๋กํ์ง ์๊ธฐ์ฒ์์ hwp ๊ฐ์ฒด๋ฅผ ๋ง๋์ค ๋, hwp = Hwp(register_module=False) ๋ผ๊ณ ์ด๊ธฐํํ์๋ฉด์ต์ ์ ์ด ๋ฐ์ํ๋ ๋ถ๋ถ์ ์ฝ๋๋ฅผ ์คํํ์ง ์์ต๋๋ค.๋์ ๋ณด์๋ชจ๋์ด ๋ฑ๋ก๋์ง ์์ผ๋ฏ๋ก ๋ณด์์น์ธํ์ ์ด ๋จ๊ฒ ๋ฉ๋๋ค.๋ฑ ํ ๋ฒ๋ง "๋ชจ๋ ํ์ฉ"์ ๋๋ฌ์ฃผ๋ฉด ๋๋ ํฐ ๋ฌธ์ ๊ฐ ๋์ง๋ ์์ ๋ฏ ํฉ๋๋ค. ์ ๋ ๊น๋ํ๊ฒ ์ ๋๋ ๋ชจ๋์ ๋ง๋ค์ด์ ๋ฐฐํฌ๋ฅผ ํ๊ณ ์ถ์๋ฐ์ค๋ฅ๊ฐ ์ฝ๊ฒ ๊ณ ์ณ์ง์ง ์์ ์ฃ์กํ ๋ง์์ด ํฝ๋๋ค.ํน์ ์ ๋ฐฉ๋ฒ ์ค ์ฑ๊ณตํ๋ ๋ฐฉ๋ฒ์ด ์๋ค๋ฉด ๊ณต์ ํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ๋ฒ์จ ์ค ์ฐํด๊ฐ ์์๋์์ต๋๋ค.ํ๋ณตํ ํ๋ฃจ, ํธ์ํ ๋ช ์ ์ฐํด ๋ณด๋ด์๊ธฐ ๋ฐ๋๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- 1
- 2
- 260
Q&A
์ฃผํผํฐ๋ ธํธ๋ถ ์ฝ๋๋ก ํ๊ธํ์ผ ์ด์ ์๋ค๊ณ ๋์ค๋๋ฐ.....
ํ์ฐ๋ ์๋ ํ์ธ์?๋จผ์ , ์ง๋ฌธ์ ๋ต๋ณ์ ๋๋ฆฌ๋ฉด1. ํญ์ ์ ๋๊ฒฝ๋ก ์ฌ์ฉ์๋์ํ๊ธ์ ํ์ด์ฌ์ผ๋ก ์กฐ์ํ ๋๋,์ฃผํผํฐ๋ ธํธ๋ถ์ด๋ ํ์ด์ฌ ์ฝ์์ ํ์ฌ ์์น๋ฅผ ์ธ์ํ์ง ์์ต๋๋ค.๊ทธ๋์ ๊ธฐ๋ณธ์ ์ผ๋ก ํญ์ ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํ ๋๋ ์ ์ฒด๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํด์ฃผ์ด์ผ ํฉ๋๋ค.์ด๋ฏธ์ง๋ฅผ ์ฝ์ ํ ๋๋, win32com์ผ๋ก ์์ ํ์ผ์ ๋ค๋ฃฐ ๋๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํ์ง ์์ผ๋ฉด ํด๋นํ์ผ์ด ์๋์ํ๊ธ ์ค์นํด๋์ ์๋ค๊ณ ๊ฐ์ ํ๊ณ ํ์ํ๋ฏ๋ก ์ค๋ฅ๊ฐ ๋๋ฒ๋ฆฝ๋๋คใ ์ ์ผ ๊ฐํธํ ๋ฐฉ๋ฒ์ os๋ pathlib ๋ฑ ๊ฒฝ๋ก๋ฅผ ๋ค๋ฃจ๋ ๋ชจ๋์ ์ฐ๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด ์๋์ ๊ฐ์ด ์ ๋ ฅํด๋ณด์๋ฉด, ํ์ฌ ์ฃผํผํฐ๋ ธํธ๋ถ ์์น์ ๋ฌธ์๋ฅผ ์ค๋ฅ ์์ด ์ฌ์ค ์ ์์ต๋๋คใ import os # win32com ๋์ pyhwpx๋ผ๋ ๋ชจ๋์ ์ฌ์ฉํ์ค ์ ์๋๋ฐ,์ด ๊ฒฝ์ฐ์๋ ์๋๊ฒฝ๋ก๋ฅผ ์ธ์ํ๋ฏ๋ก, ํ์ผ๋ช ๋ง ์ ๋ ฅํ์ ๋ ๋ฉ๋๋ค.๊ฐ์ ํ๋ฐ๋ถ์ pyhwpx๋ฅผ ๋ค๋ฃจ๋ ์์ ๋ ์๊ฐ๋๋ฆฌ๊ณ ์์ผ๋, ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค. ์ฝ๋ฉํ๋ก๊ทธ๋จ ์ฌ์ฉ๋ฒใ ์ฃ์กํ ๋ถ๋ถ์ ๋๋ค. ๊ฐ์ธ์ ์ผ๋ก๋ ์ฌ๋ฌ๊ฐ์ง๋ฅผ ์จ๋ณด์๊ณ ๊ฐ์ฅ ์ทจํฅ์ ๋ง๋ ํ๋๋ฅผ ๊ณ ๋ฅด์๊ฒ ํ๊ณ ์ถ์ ์๋์๋๋ฐ๊ทธ๊ฒ ์ด๋ ค์ด ๋ถ๋ถ์ด ๋ ์ค์ ์๊ฐํ์ง ๋ชปํ์ต๋๋ค. ๊ฐ์ธ์ ์ผ๋ก๋ ํ์ด์ฐธ ์ ๋ฃ๋ฒ์ ์ ์ค๋ซ๋์ ์จ ์์ต๋๋ค.ํ์ด์ฐธ์์๋ ์ ๋ฃ๋ฒ์ ๋ง ์ฃผํผํฐ๋ ธํธ๋ถ ์ง์์ ํ๋๊น์.๊ฐ๋จํ ์ฝ๋๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๊ฑฐ๋ ํ ๋๋ ํฐ๋ฏธ๋์์ ipython์ ์คํํ๊ธฐ๋ ํ๊ณ ์. ํ์ด์ฐธ๊ณผ ๋ณ๊ฐ๋ก ๋ฌด๋ฃ๋ก ์ฃผํผํฐ๋ ธํธ๋ถ์ ์ฌ์ฉํ ์ ์๋ ๋ค๋ฅธ ์ต์ ์ด ๋ ๊ฐ์ง๊ฐ ์๋๋ฐ,ํ๋๋ vscode๋ฅผ ์ฐ๋ ๊ฒ์ด๊ณ , ๋ค๋ฅธ ํ๋๋ ์น๋ธ๋ผ์ฐ์ ์์ ์์กฐ ์ฃผํผํฐ๋ ธํธ๋ถ์ ์ฐ๋ ๊ฒ์ ๋๋ค. vscode๋ ์ปค์IDE๋ ํธ๋ฆฌํ ๊ธฐ๋ฅ๋ ๋ง๊ณ , ์ฝํ์ผ๋ฟ ๋ฑ AI ๊ธฐ๋ฅ์ง์๋ ๊ฐ๋ ฅํ๊ณ ๋ฌด์๋ณด๋ค ์ฃผํผํฐ๋ ธํธ๋ถ์ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์๋๋ฐ๋ค, ๊ต์ฅํ ๋ค์ํ ๋จ์ถํค๋ฅผ ์ ๊ณตํ๊ณ ์์ด์์ฒ์์ ์์ํ๊ณ , ๋ณต์กํ๊ฒ ๋๊ปด์ง ์ ์์ง๋ง, ๋์ธ ๋ฌ ์ง๋ํ๊ฒ ์ฌ์ฉํด๋ณด์๋ฉด์ฝ๋ฉ์ ์ด๋ ๊ฒ ํธํ๊ฒ ํ ์ ์๊ฒ ์ง์์ ์ ํด์ฃผ๋๊ตฌ๋ ํ๊ณ ๋๋ผ์๋ ์ง์ ์ด ์ฌ ๊ฒ์ ๋๋ค. ์, ๊ฒฐ๋ก ์ ๋ช ๊ฐ์ง๋ฅผ ์ฒดํํด๋ณด์๊ณ ์ ์ผ ๋๋์ด ์ข์ ์๋ํฐ ํ๋๋ฅผ ์ฃผ๋ ฅ์ผ๋ก ์ก์ผ์๋ ๊ฑธ ์ถ์ฒ๋๋ฆฝ๋๋ค.์ต๊ทผ ๋์ธ๋ ๋จ์ฐ์ฝ vscode๋, ์ด๋ฅผ ํฌํ ํ cursor IDE์ด๋ฏ๋ก, ์ด๋ค์ ์ญ ์จ๋ณด์๋ฉด ์ข๊ฒ ์ต๋๋ค. ์ฒจ์ธ๋๋ฆฌ๋ฉด์ฐ๋ฆฌ๊ฐ์ ์ฝ์๋ชป์ด ์ฝ๋ฉ์ ๋ฐ์ ๋ค์ด๋ ๊ฒ ์์ฒด๊ฐ, ๋๋จํ ์ฉ๊ธฐ๊ฐ ํ์ํ ์ผ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ . ์ ๋ฌด๋ฅผ ๋ ์ ํ๊ณ ์ถ๊ฑฐ๋, ๋ ๋น ๋ฅด๊ณ ์ ํํ๊ฒ ๋ง์น๊ณ ์ถ์ ๋ถ๋ค์ด ์ด ๊ฐ์๋ฅผ ์ฐพ์์ฃผ์๋ ๊ฑฐ๋ผ๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์, ์ด๋ค ์ฝ๋ฉ ์ค๋ ฅ์ ์๊ด์์ด ์กด๊ฒฝ์ค๋ฝ๊ธฐ๋ ํ๊ณ , ๋๋จํ๋ค๋ ๋ง์๋ ๋ญ๋๋ค.์ฝ๋ฉ์ ์์ง๋, ํ๋ฉด ํ ์๋ก ์ด๋ ค์ด ๋ฌธ์ ๋ฅผ ๋ง๋ฉ๋๋ค. ์๊ฐ์ด ์ง๋๋ฉด์ ๋ ์ด๋ ค์์ง๊ณ ๊ณ ๋ฏผ์ด ๋ง์์ง๊ธฐ๋ ํฉ๋๋ค. ๊ทผ๋ฐ ์ฒ์์ ์ค์ฃฝํ ๊น์^^; ๊ฐ์ธ์ ์ผ๋ก ํ์ฐ๋๊ป์ ์ด๋ค ์ ๋ฌด๋ฅผ ํ์๋์ง, ๋ ์ด๋ค ์ ๋ฌด๋ฅผ ์๋ํํ๊ณ ์ถ์ผ์ ์ง ์๊ณ ์ถ๊ธฐ๋ ํฉ๋๋ค. ๋ฏธํกํ ์ํ๋ก ๊ฐ์๋ฅผ ๊ณต๊ฐํด๋์, ์ถฉ๋ถํ ์ํ์๋ ์ง์์ ์ป์ง ๋ชปํ์ค๊น๋ด ๊ฑฑ์ ๋๊ธฐ๋ ํ๊ณ ์.๊ด์ฐฎ์ผ์๋ค๋ฉด ๋๊ธ๋ก, ๋ด๋นํ์๋ ์ ๋ฌด ๊ด๋ จํ ์งค๋งํ ์ฝ๋ฉํธ๋ฅผ ๋จ๊ฒจ์ฃผ์๊ฑฐ๋, ์์ฃผ ์ง๋ฌธ๊ธ์ ๋จ๊ฒจ์ฃผ์ธ์. ์ต๋ํ ์์ธํ๊ฒ ๋ต๊ธ์ด๋ ์์ ์์ค์ฝ๋๋ฅผ ์ ๊ณตํด๋๋ฆฌ๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฃผํผํฐ๋ ธํธ๋ถ์ด๋ ํ์ด์ฌ์ ์ต์ํด์ง๊ธฐ ์ ์๋ ์ฝ๋ฉ์ด ๋๋ฅ๋๋ค. ์ฐจ๋ผ๋ฆฌ ์์์ ์ผ๋ก ํ๊ณ ๋ง์ง ํ๋ ์๊ฐ๋ ๋ค๊ณ ์. ๊ทธ๋ฐ ๋๋ ์ ์ ์ฝ๋ฉ ๊ณต๋ถ๋ฅผ ์ฌ์ ๋ ๊ด์ฐฎ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ค๋ง, ๊ผญ ์ฝ๋์๋ํฐ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋, ์ด๋ฌ์ด๋ฐ ์ํฉ์์ ๋๋ต ์ด๋ฐ ์ฝ๋๋ฅผ ์จ์ผ๊ฒ ์ง? ํ๋ ์ฐ์ต์ ํํ์ด ํ์๋ค ๋ณด๋ฉด ๋ถ๋ช ํ, ์จ์ฌ๋ฏ ์์ฐ์ค๋ฝ๊ฒ ๋ด ์๊ฐ์ ์ฝ๋๋ก ์ฎ๊ธธ ์ ์๋ ์์ ์ด ์ฐพ์์ฌ ๊ฒ์ ๋๋ค. ๊ทธ ์ง์ ๋ถํฐ ์ฝ๋ฉ์ค๋ ฅ์ด ๋น ๋ฅด๊ฒ ํฅ์๋ ๊ฒ์ ๋๋ค.๋น์ฅ์ ์๋๊ฒ ์ง๋ง, ๊ทธ๋ ๋ค๊ณ ๋๋ฌด ๋จผ ๋ฏธ๋๋ ์๋ ๊ฑฐ๊ณ ์. ๋ด์ผ ์ด๋ง๋์ฏค ์ ๋ฌด์๋ํ๋ ์ฝ๋ฉ์ ๊ณ ์๊ฐ ๋์ด์์ ํ์ฐ๋์ ์ง์ฌ์ผ๋ก ์์ํฉ๋๋ค. ํ๋ณตํ ํ๋ฃจ, ์ฆ๊ฑฐ์ด ์ค์ฐํด ๋ณด๋ด์๊ธฐ ๋ฐ๋๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
- 1
- 2
- 190
Q&A
๋ นํ๋ ์คํฌ๋ฆฝํธ๋งคํฌ๋ก๋ฅผ ํ์ด์ฌ์์ ํ์ฉํ๋ ๋ฐฉ๋ฒ ๋ด์ฉ์ด ์๋ณด์ ๋๋ค.
ํ์ง๋ ์๋ ํ์ธ์!ํด๋น ์์(?)์ด ์ ์ค์๋ก ์ ๊ฑฐ๊ฐ ๋์ด๋ฒ๋ ธ๋๋ด ๋๋คใ ใ ใ ใ ๋ณธ ๋ด์ฉ์ ์๋ ํฌ์คํ ์ ๊ธฐ๋ฐ์ผ๋ก ํ์์ผ๋ฏ๋ก, (์์ ๋ด์ฉ๋ ์ด์ ๋์ผํฉ๋๋ค)๋จผ์ ์ฐธ๊ณ ํด์ฃผ์๊ณ ใ ์กฐ๋ง๊ฐ ๋ณต๊ตฌํด๋๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค! ํ๋ณตํ ํ๋ฃจ ๋์ธ์^^
- 1
- 2
- 122
Q&A
์์ ๊ทธ๋ํ์ ํ ์ด๋ธ์ ํ๊ธ ๊ฐํ์ด์ง์ ์ฝ์ ํ๊ธฐ
ํ์ค๋, ์๋ ํ์ธ์?๋๋ถ์ ์ ์พํ ๊ธ์์ผ์ ๋ณด๋์ต๋๋ค. ๊ธฐ๋ํ์ ๊ฒ๋ณด๋ค ๋ณต์กํ ์ฝ๋๋ฅผ ๋ณด์ฌ๋๋ฆฌ๋ ๊ฒ ๊ฐ์ ์ฐ๋ ค์ค๋ฐ ๋ง์์ด ์์ต๋๋ค๋ง,๋ง์ ์๋์ํ๊ธ ํํธ๋ ์ฝ๋ ์ ์ฒด์์ ์ด ์ค ์ ๋๋ก,์์ ์ฐจํธ์ค๋ธ์ ํธ๋, ํน์ ๋ฒ์๋ฅผ ์ ํํ๋ ์ฝ๋๊ฐ ๋๋ถ๋ถ์ด๊ธฐ๋ ํ๋ค์. ์ฐ์ ์งง์ ์์ฐํ๋ฉด์ ๋จผ์ ๋ณด์ฌ๋๋ฆฝ๋๋ค.(์ฌ์ง)ํ/๊ธ์์ ๊ทธ๋ฆผ์ด๋ ํ์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๋ ์ฝ๋๋ฅผ ๋นผ๊ธฐ ์ํด ์ฉ์ง์ ์์๋ ์ฌ๋ฐฑ์ 15 ์ ๋๋ก ์ค์ฌ๋์์ต๋๋ค. ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค. ์ฝ๋๋ ํฌ๊ฒ ๋ ๋ถ๋ถ์ผ๋ก ๋๋์์ต๋๋ค. ํ๋์ฉ ๋ณด์ฌ๋๋ฆฌ๋ฉด, 1. ์ฐจํธ์ด๋ฏธ์ง ์ฝ์ ํ๋ ์ฝ๋import xlwings as xw from pyhwpx import Hwp # ํ๊ธ ์ธ์คํด์ค ์์ฑ hwp = Hwp() # ํ์ฑํ๋ Excel ์ฑ๊ณผ ์ํฌ๋ถ ๊ฐ์ ธ์ค๊ธฐ excel = xw.apps.active wb = excel.books[0] # ์ํฌ์ํธ ๋ด ์ฐจํธ๋ฅผ ์ํํ๋ฉฐ ์ฒ๋ฆฌ for ws in wb.sheets: shapes = ws.api.Shapes # ๋ชจ๋ ๋ํ ๊ฐ์ ธ์ค๊ธฐ(๋จ, ๋ชจ๋ ๋ํ์ด ์ฐจํธ๋ผ๋ ๊ฐ์ !!) for i in range(1, shapes.Count + 1): # ๋ชจ๋ ๋ํ์ ์ํํ๋ฉด์ shape = shapes.Item(i) # ๋ํ์ ์ ํํ๊ณ if shape.Type == 3: # 3 == ์ ํํ ๋ํ์ด ์ฐจํธ(ChartObject)์ด๋ฉด shape.CopyPicture() # ๊ทธ๋ฆผ์ผ๋ก ๋ณต์ฌํ๊ธฐ ์คํ ํ์ hwp.goto_page(i) # ํ/๊ธ ๋ฌธ์์ iํ์ด์ง ์์์ ์ผ๋ก ์ด๋ํด์ hwp.MovePageEnd() # ํ์ด์ง ๋์ผ๋ก ์ปค์๋ฅผ ์ฎ๊ธฐ๊ณ hwp.BreakPara() # ์ํฐ ํ ๋ฒ ์น ํ์ hwp.Paste() # ์ฐจํธ ์ด๋ฏธ์ง ๋ถ์ฌ๋ฃ๊ธฐ hwp.BreakPara() # ์ํฐ์ฃผ์์ ์ฝ์ด๋ณด์๋ฉด ์ด๋ ์ ๋ ์ดํด๊ฐ ๋์ค ๊ฑฐ๋ผ๊ณ ์๊ฐํฉ๋๋ค^^;์ฝ๋๋ฅผ ๋ฐ๋ผ ์น์ง ๋ง์๊ณ , ํ ์ค, ํน์ ๋ ์ค์ฉ ๊ธฐ์ตํด์ ์ง์ ์์ฑํด๋ณด์๋ฉด๋ ๋น ๋ฅด๊ฒ ์ต์ํด์ง์ค ๊ฒ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋๋ ํ๋ฅผ ๋ถ์ฌ๋ฃ๋ ์ฝ๋์ ๋๋ค. 2. ์์ ๋ฒ์๋ฅผ ํ/๊ธ ํ๋ก ๋ถ์ฌ๋ฃ๋ ์ฝ๋์ด ๋ถ๋ถ์ด ์กฐ๊ธ ๊น๋ค๋กญ๊ฒ ๋๊ปด์ง ์ ์๋๋ฐ, ์๋์ ๋ถ์ฐ์ค๋ช ์ ๋ถ์ด๊ฒ ์ต๋๋ค.# ์์ ์ด๊ธฐ ws = wb.sheets[0] # ์ฒซ ๋ฒ์งธ ์ํธ ์ ํ # A์ด์์ ๊ฐ์ด "๊ตฌ ๋ถ"์ธ ์ ์ ํ๋ฒํธ ์์งํ๊ธฐ a_values = ws.range(ws.cells(1,1), ws.cells(len(ws.used_range), 1)).value gubun_rows = [i+1 for i, val in enumerate(a_values) if val == "๊ตฌ ๋ถ"] # ์์ ๋ฒ์ ๋ณต์ฌ ๋ฐ ํ/๊ธ์ ํ๋ก ๋ถ์ฌ๋ฃ๋ ์ฝ๋ for idx, row in enumerate(gubun_rows, start=1): # ์์งํ ํ๋ฒํธ๋ฅผ ์ํํ๋ฉด์ init_cell = ws.range(f"A{row}") # "๊ตฌ ๋ถ" ์ ๋ก ์ด๋ํด์(ํ์ ์ข์ธก์๋จ) end_cell = init_cell.end("right").end("down") # ์ฐ์ธกํ๋จ ๋ ์ ์ฃผ์๋ฅผ ์ฐพ๊ณ table_range = ws.range(init_cell, end_cell) # ํด๋น ๋ฒ์๋ฅผ table_range.copy() # ๋ณต์ฌํจ hwp.goto_page(idx) # ํ/๊ธ ๋ฌธ์์ idxํ์ด์ง ์์์ ์ผ๋ก ์ด๋ํ ํ hwp.MovePageEnd() # ์ปค์๋ฅผ ํด๋นํ์ด์ง ๋์ผ๋ก ์ด๋ hwp.Paste() # ํ ๋ถ์ฌ๋ฃ๊ธฐ # ํ ๋๋น๋ฅผ ๋ณธ๋ฌธ์ ๋ง์ถค i = 0 while hwp.get_into_nth_table(i): # ๋ฌธ์์ i๋ฒ์งธ ํ๋ก ์ง์ ํ ํ hwp.set_table_width() # ํ ๋๋น๋ฅผ ๋ณธ๋ฌธ ๋๋น์ ๋ง์ถค i += 1 # ๋ค์ ํ๋ก ์ด๋๊ฐ๊ฒฐํ๊ฒ๋๋ง ๋ผ์ธ๋ณ๋ก ์ฃผ์์ ๋ฌ์๋ณด์๋๋ฐ,์ ์๊ฐ์ ๊ฐ์ฅ ์ด๋ ต๊ฒ ๋๊ปด์ง ๋ถ๋ถ์ ์ญ์ a_values์ gubun_rows๋ฅผ ๊ตฌํ๋ ๋ถ๋ถ์ด ์๋๊ฐ ์ถ์ต๋๋ค.์ด ๋ฌธ๋ฒ๋ค์ ์ด๋ค ๊น์ ์๋ฆฌ๊ฐ ์๋ค๊ธฐ๋ณด๋ค, "์ฐ๋ฆฌ, ์ด๋ฐ ๋์์ ์ด๋ฐ ์ฝ๋๋ก ์ฝ์ํ์" ์์ ๋ฌธ๋ฒ์ด๋ผ์์ต์ํด์ง๋ ๊ฒ ๋ง๊ณ ๋ ์๋๊ฐ ์๋ ๋ฏ ํฉ๋๋ค. ws.range(ws.cells(1,1), ws.cells(len(ws.used_range), 1)).valueโ ์ฐ์ ws.range ๊ฐ์ฒด๋ ์ํฌ์ํธ์ ์ ๋ฒ์๋ฅผ ์์ ๋กญ๊ฒ ์ ํํ ์ ์๋๋ฐ, ์ฌ์ฉ๋ฒ์ด ์๋ ๋ ๊ฐ์ง์ ๋๋ค.ํ๋๋ ws.range("A1:B5").values ์ด๋ฐ ์์ผ๋ก ์์ ์ ์ ๋ฒ์ ๋ฌธ๋ฒ์ ๋ฌธ์์ด๋ก ๊ทธ๋๋ก ์ฐ๋ ๋ฐฉ๋ฒ๊ณผ,๋ค๋ฅธ ํ๋๋ ws.range(ws.cells(1,1), ws.cells(2,5))์์ผ๋ก cells๊ฐ์ฒด๋ฅผ ๋ ๊ฐ ๋ฃ๋ ๋ฐฉ๋ฒ์ ๋๋ค.ํญ์ ๊ณ ์ ๋ ๋ฒ์๋ฅผ ์ ํํด์ผ ํ๋ ๊ฒฝ์ฐ๋ผ๋ฉด ์ฒซ๋ฒ์งธ ๋ฐฉ๋ฒ์ธ ๋ฌธ์์ด ๋ฐฉ์์ด ํจ์ฌ ์ง๊ด์ ์ด์ง๋ง,์ง๊ธ ์ฐ๋ฆฌ ๊ฒฝ์ฐ์ฒ๋ผ ํน์ ์ ์ ์ฐพ์์ผ ํ๊ฑฐ๋, ์ํํ๋ ๊ฒฝ์ฐ์๋ ๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ด ์ฝ๋ฉํ๊ธฐ ์ฝ์ต๋๋ค. โก๊ทธ๋ฆฌ๊ณ len(ws.used_range) ์ฝ๋๊ฐ ๋ค์ด๊ฐ ์๋ ์ด์ ๋,A์ด ์ ์ฒด์์ "๊ตฌ ๋ถ"์ด๋ผ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ผ๋ ค๋ ๋ชฉ์ ์ธ๋ฐ ws.Range("A:A") ๋ผ๊ณ ์ง์ ํด๋ฒ๋ฆฌ๋ฉด ์ ์ด 100๋ง๊ฐ๋ ์ ํ์ด ๋์ด๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋ค์ ๋๋ฆฝ๋๋ค.๊ทธ๋์ "์ฌ์ฉํ ๋ฒ์"์ ํ ๊ฐฏ์๋ง ์ธ์ A1:A100 ์ ๋ ๋ด์์๋ง ํ์์ ํ๊ธฐ ์ํด"์ํฌ์ํธ ์ฌ์ฉ๋ฒ์์ ํ ๊ธธ์ด"์ธ len(ws.used_range)๋ฅผ ํ์๋ฒ์๋ก ์ง์ ํ ๊ฒ์ ๋๋ค. [i+1 for i, val in enumerate(a_values) if val == "๊ตฌ ๋ถ"]โ enumerate๊ฐ ์กฐ๊ธ ์์ํ์ค ์ ์๊ฒ ์ต๋๋ค.enumerate๋ ๋ฆฌ์คํธ๋ ๋ฌธ์์ด ๋ฑ ์ํ ๊ฐ๋ฅํ ๊ฐ์ฒด๋ฅผ for๋ฌธ์ ๋ฃ์์ ๋,ํด๋น ์ธ๋ฑ์ค์ ์์ดํ ๋ง ๊บผ๋ด๋ ๊ฒ ์๋๋ผ, ์์ดํ ์ ์ธ๋ฑ์ค๋ฒํธ๋ฅผ ๊ฐ์ด ๋ฆฌํดํด์ค๋๋ค.์๋๋ enumerate์ ์์์ ๋๋ค.>>> a = ["A", "B", "C"] >>> for i in a: >>> print(i) ... A B C >>> for idx, val in enumerate(a): >>> print(idx, val) ... 0 A 1 B 2 Cfor๋ฌธ ์์์ enumerate ํจ์๋ ์ ๋ง ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค. ์ตํ ๋์๋ฉด ํฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.๊ทธ๋ฌ๋ฉด, A์ด์ ๊ฐ๋ค์ด ๋ค์ด ์๋ a_values ๋ฆฌ์คํธ ์์์๊ฐ์ด "๊ตฌ ๋ถ"์ธ ์ฃผ์์ ํ๋ฒํธ(์ธ๋ฑ์ค)๋ง ๋ฐ๋ก ์ถ์ถํ๋ ค๋ฉด์๋์ ๊ฐ์ด for๋ฌธ์ ์์ฑํ๋ฉด ๋ฉ๋๋ค.gubun_list = [] for i, val in enumerate(a_values): # if val == "๊ตฌ ๋ถ": gubun_list.append(i + 1) # ํ์ด์ฌ์ธ๋ฑ์ค๋ 0๋ถํฐ, ์์ ํ์ 1๋ถํฐ ์์ํ๋๊น +1 ์์ฒ๋ผ ๋ค ์ค๋ก ์งค ์๋ ์๊ณ ์.ํ์ด์ฌ์ "๋ฆฌ์คํธ ์ปดํ๋ฆฌํจ์ "์ด๋ผ๋ ๋ฌธ๋ฒ ๋๋ถ์์ ๋ค ์ค์ ๊ฐ๊ฒฐํ๊ฒ ํ ์ค๋ก ์งค ์ ์์ต๋๋ค."๋ฆฌ์คํธ์ปดํ๋ฆฌํจ์ "์ "๋ฆฌ์คํธ ์์ for๋ฌธ์ ํฌํจ(comprehension)ํ๋ ๋ฌธ๋ฒ์ ๋๋ค.ํ ํ๋ก๊ทธ๋๋ฐ์ธ์ด ์ ์ ๋ค์ด ํ์ด์ฌ์์ ๊ฐ์ฅ ๋ถ๋ฌ์ํ๋ ๊ฐ๊ฒฐํ ๋ฌธ๋ฒ ์ธ ๊ฐ์ง๋ก๋ฌธ์์ด ์ธ๋ฑ์ฑ, f-์คํธ๋ง ๋ฐ ๋ฆฌ์คํธ&๋์ ๋๋ฆฌ ์ปดํ๋ฆฌํจ์ ์ ๊ผฝ๋๋ค๊ณ ํฉ๋๋ค.๊ทธ๋์ ์ต์ข ์ฝ๋์๋ ์๋์ฒ๋ผ ๋ฆฌ์คํธ์ปดํ๋ฆฌํจ์ ์ ์จ์ ํ ์ค๋ก ์ ์์ต๋๋ค.gubun_list = [i + 1 for i, val in enumerate(a_list) if val == "๊ตฌ ๋ถ"] ํน์ ์ ์ดํด๊ฐ ์ ๋์๊ฑฐ๋ ์ด๋ ต๊ฒ ๋๊ปด์ง๋ ๋ถ๋ถ์ด ์๋ค๋ฉด์ถ๊ฐ๋ก ์ง๋ฌธ ๋จ๊ฒจ์ฃผ์ธ์.์ ์ ์ผ๋ก ์ ์ค๋ช ๋ ฅ ๋ถ์กฑ ํ์ ๋๋คใ ๋ง์น๋ฉฐ์์ ๊ด๋ จ ์ฝ๋๋ฅผ ์งค ๋๋, ์ ์ด๋ ๋ฒ์, ํ์ฌ ์ ํ์์น ๋ฑ์ ์๊ฐํ๋ฉด์์ ๋ฒ ๊น๋ค๋กญ๊ฒ ์ํ์ฐฉ์ค๋ฅผ ๊ฑฐ์ณ์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ง๋ง,๋๋ถ๋ถ ๋งคํฌ๋ก ๋ นํ๋ฅผ ํตํด ํฐ ํ์ ์ฝ๋๊ฐ ์กํ๋๋ค.๊ทธ๋ฆฌ๊ณ VBA์ ํ์ด์ฌ ์ฝ๋๋ ๋น์ทํ ๋ถ๋ถ์ด ์์ด์๋ นํํ ์์ ๋งคํฌ๋ก๋ฅผ ๊ทธ๋๋ก ์กฐ๊ธ๋ง ์์ ํ๋ฉด ์ ๋์๊ฐ๋ ํ์ด์ฌ ์ฝ๋๋ฅผ ๊ธ๋ฐฉ ์ป์ ์ ์์ต๋๋ค.์๋์ํ๊ธ๋ ๋น์ทํฉ๋๋ค. ๋๋ถ๋ถ์ ์คํฌ๋ฆฝํธ๋งคํฌ๋ก ๋ นํ๋ฅผ ํตํดํน์ ์์์ ์ด๋ ํ๋ก์ธ์ค์ ๋์๋๋ ์ก์ ์ ์ฐพ์๋ด๊ณ ,๊ทธ ์ธ์ ๋งคํฌ๋ก ๋ นํ๊ฐ ์ ๋๋ ์ก์ ์ด๋, ํ๋, ์ด๋ฏธ์ง ์ฝ์ ๊ฐ์ ํน์ํ ๋ฉ์๋๋ API๋ฌธ์์์ ๊ฒ์ํ๋ ๋ฐฉ์์ผ๋ก์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.์์ฆ์ ํ๊ธ๊ฐ๋ฐ์ํฌ๋ผ์ด๋ผ๊ณ ,ํ์ปด ๊ฐ๋ฐ์ ๋ถ๋ค์ด ์ง์ ๋ต๋ณ์ ๋ฌ์์ฃผ๋ ๊ณ ๋ง์ด ์ฌ์ดํธ๊ฐ ํ๋ ์๊ฒผ์ต๋๋ค.https://forum.developer.hancom.com/ ๊ฐ์ฌํ๊ฒ๋ ๋ณดํต ํ๋ฃจ ์์ ์์ธํ ๋ต๋ณ์ ๋ฌ์์ฃผ์๊ณ ,์ด์ ์ ์ธ ์ปค๋ฎค๋ํฐ ๋ถ๋ค์ด ๋ ๋น ๋ฅด๊ฒ ๋ต๋ณ์ ๋ฌ์์ฃผ์๊ธฐ๋ ํด์์ ๋ ์ข ์ข ๋ฐฉ๋ฌธํฉ๋๋ค. ๋ต๋ณ์ด ๋์์ด ๋์๊ธธ ๋ฐ๋๋๋ค.๊ทธ๋ฆฌ๊ณ ๋ถ๋ช ํ ์ถฉ๋ถํ ๋ต๋ณ์ด ์๋๋ผ๋ ๊ฒ๋ ์ง์์ด ๊ฐ๋๋ค.์ถ๊ฐ๋ก ์ง๋ฌธ ๋จ๊ฒจ์ฃผ์ธ์ใ ์ฆ๊ฑฐ์ด ์ฃผ๋ง ๋ณด๋ด์ธ์~^^
- 1
- 2
- 406