ilco
@ilco
Students
832
Reviews
55
Course Rating
4.9
์๋ ํ์ธ์?
์ผ์์์ฝ๋ฉ ๋ธ๋ก๊ทธ๋ฅผ ์ด์์ค์ธ ์ผ์ฝ์ ๋๋ค.
์ ๋ฌด์๋ํ์ ๊ด๋ จํ ์ฝํ ์ธ ์ ์ ๋ฐ ๊ฐ์ ๋ฑ์ ํ๊ณ ์์ต๋๋ค.
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 ๋ชจ๋์ ์ฌ์ฉํ์ ๋ค๋ ์ ์ ํ์,๋ฌธ์์ ์ฒซ ๋ฒ์งธ ํ, ์ฒซ ๋ฒ์งธ ์ (A1)๋ก ์ด๋ํ๋ ๋ช ๋ น์ด๋hwp.get_into_nth_table(0) ์ ๋๋ค. (0์ ์๋ต ๊ฐ๋ฅํฉ๋๋ค.) (์ฌ์ง) ๋ต๋ณ์ด ๋ฆ์ด ์ฃ์กํฉ๋๋ค.๋์์ด ๋์๊ธธ ๋ฐ๋๋๋ค.ํ๋ณตํ ํ๋ฃจ ๋์ธ์!^^
- 1
- 2
- 86
Q&A
๋ณธ๋ฌธ์ ๊ฐ์ฃผ๋ก ๋ด๋ฆฌ๋ ๋ฒ
ํธ์๋ ์๋ ํ์ธ์?๋ต๋ณ์ด ๋ฆ์์ต๋๋ค.์ง๋ฌธ ์ฃผ์ ๋ด์ฉ์ ๋ํ ํน์ ์ฑํฐ๊ฐ ์์ง๋ ์์ต๋๋ค.๋ณธ ๋ต๋ณ์ ์ต๋ํ ๊ตฌ์ฒด์ ์ผ๋ก ์ค๋ช ์ ๋๋ฆฌ๊ณ ์ ํฉ๋๋ค.๋ง์ฝ ์ดํด๊ฐ ์ ์ ๋๋ ๋ถ๋ถ์ด ์๋ค๋ฉด ์ถ๊ฐ์ง๋ฌธ ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๊ฐ๋์ง๋ง, ๊ทธ๋๋ ์ ๊ฐ ๊ฐ์ฅ ํจ์จ์ ์ด๋ผ๊ณ ์๊ฐํ๋ ๋ฐฉ๋ฒ์"์ฐพ๊ธฐ"๋ฅผ ํ์ฉํ๋ ๊ฒ์ ๋๋ค. ๋จ, ๊ฐ์ฃผ๋ก ๋ฐ๊ฟ ๊ตฌ๊ฐ์ ๋ง์ง๋ง์๋ง ๋ซ๋ ๊ดํธ๊ฐ ์์ด์ผ ํฉ๋๋ค.(์ด๋ฐ ์ ํ์กฐ๊ฑด์ ๋์ง ์๋๋ค๋ฉด ๊ต์ฅํ ๋ง์ ๋ถ๋์ ์์ธ์ฒ๋ฆฌ๋ฅผ ํด์ผ ํ๋๋ฐ ๊ทธ๊ฒ ์ฐธ ์ด๋ ต์ต๋๋ค.)๊ทธ๋ฆฌ๊ณ , win32com ๋์ ์ด๋ฅผ ์กฐ๊ธ ๋ณด์ํ ํ์ด์ฌ ๋ชจ๋์ธ pyhwpx ๋ฅผ ์ฌ์ฉํ๊ฒ ์ต๋๋ค. ์์๋ก,(์ฌ์ง)์์ ๊ฐ์ ๋ฌธ์๊ฐ ์์ ๋,"์ฐพ๊ธฐ" ๊ธฐ๋ฅ์ ํตํด (์ถ์ฒ: ๋ฅผ ์ฐพ์ผ๋ฉด ์๋์ ๊ฐ์ด ์ ํ์ด ๋ฉ๋๋ค. [์๋ ์์ ์ฐธ๊ณ ](์ฌ์ง)์ด๋ฅผ ์กฐ๊ธ ์์ฉํ์ฌ, ์กฐ๊ฑด์ ์ฌ์ฉ์ ํ์ฑํํ๊ณ \(์ถ์ฒ:.+\)๋ฅผ ์ฐพ์ผ๋ฉด ๊ฐ์ฃผ๋ก ๋นผ๋ผ ๊ตฌ๊ฐ์ ์ ๋ถ ์ ํํ ์ ์์ต๋๋ค. ์ค๊ฐ์ .+๋ ์๋ฌด ๊ธ์๋ค์ ๋ปํ๋ ์์ผ๋์นด๋ ๊ฐ์ ์ ๊ท์ ๋ฌธ๋ฒ์ ๋๋ค. [์๋ ์์ ์ฐธ๊ณ ](์ฌ์ง) ๊ทธ๋ผ ํด๋น ๊ตฌ๊ฐ์ ์๋ผ๋ธ ํ, ๊ฐ์ฃผ์ฝ์ ๋ช ๋ น ์คํ, ๋ถ์ฌ๋ฃ๊ธฐ๋ฅผ ํ๋ฉด ํด๋น ๊ตฌ๊ฐ์ด ๊ฐ์ฃผ๋ก ๋ณ๊ฒฝ๋๊ณ ,๊ฒฐ๊ตญ ์ด๋ฅผ while๋ฌธ์ผ๋ก ๋ฐ๋ณตํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ์๋ ์์ฐํ๋ฉด๊ณผ ์ ์ฒด ์์์ฝ๋๋ฅผ ๋ณด์ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค.(์ฌ์ง) ์ฝ๋๋ ์๋์ ๊ฐ์ต๋๋ค.from pyhwpx import Hwp hwp = Hwp() # hwp.open("ํธ์งํ _ํ์ผ๊ฒฝ๋ก.hwp") hwp.MoveDocBegin() # ๋ฌธ์ ์ฒ์์ผ๋ก ์ด๋ while hwp.find(r"\(์ถ์ฒ:.+\)", regex=True): # ์ ๊ท์ ์ฐพ๊ธฐ(์ฐพ์ผ๋ฉด True ๋ฆฌํด) ๋ฐ๋ณต endnote = hwp.GetTextFile("HWPML2X") # ๊ฐ์ฃผ๋ก ๋ฐ๊ฟ ๋ถ๋ถ ์ถ์ถ hwp.Delete() # ์ญ์ hwp.InsertFootnote() # ๊ฐ์ฃผ์์ฑ hwp.SetTextFile(endnote) # ๊ฐ์ฃผ์ฝ์ hwp.CloseEx() # ๊ฐ์ฃผ์์ ๋น ์ ธ๋์ค๊ธฐ ์ค๊ฐ์ HWPML2X๋, ํน์ ๋ด์ฉ์ ์ถ์ถํ ๋ ์ ๊ฐ ์ ์ฉํ๋ ํฌ๋งท(XML)์ ๋ฌธ์์ด์ ๋๋ค. ๋์์ด ๋์๊ธธ ๋ฐ๋๋๋ค.ํ๋ณตํ ํ๋ฃจ ๋์ธ์^^
- 1
- 1
- 35
Q&A
๋น ๋ฌธ์๋ฅผ ์๋ก ์ด๋๋ ํ์ ์ด ์๋์ค๋๋ฐ ๊ธฐ์กด ๋ฌธ์๋ฅผ ์ด๋ฉด ํ์ ์ด ๋์ต๋๋ค
์ ํ์ผ์๋ ์๋ ๋ณด์ํ์ ์ด ๋จ์ง ์์ต๋๋ค.์์ง ๋ ์ง์คํธ๋ฆฌ๋ฑ๋ก์ด ์ ์์ ์ผ๋ก ๋์ง ์์ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค. ๋ค์ ์๋ํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.ํน์ ๊ฐ์ํ๊ฒฝ ํฐ๋ฏธ๋์์ (pywin32 ๋ชจ๋์ ์ค์นํ์ ๋์ ๋์ผํ๊ฒ)pip install pyhwpx ๋ช ๋ น์ด๋ก pyhwpx ๋ชจ๋์ ์ค์นํ์ ํ์ from pyhwpx import Hwp hwp = Hwp()๋ช ๋ น์ด๋ก ์๋์ํ๊ธ์ ์คํํ์๋ ๊ฒ๋ ํ ๊ฐ์ง ๋์์ ๋๋ค. ์ฐธ๊ณ ํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.ํ๋ณตํ ํ๋ฃจ ๋์ธ์^^
- 1
- 2
- 50
Q&A
ํ๊ธ ์๋ํ ์ฝ๋ ์ฝ์ !!
ใ ใ ใ ใ ๋! ๋ฉ์ผ๋ก ์ฝ๋ ์ก๋ถ๋๋ ธ์ต๋๋ค. ํ์ธ ๋ถํ๋๋ฆฝ๋๋ค.ํ๋ณตํ ํ๋ฃจ ๋์ธ์!!!
- 1
- 2
- 122
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
- 69
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
- 67
Q&A
์คํฌ๋ฆฝํธ ๋งคํฌ๋ก ์ด๊ธฐํ ํ๊ณ ์ถ์ต๋๋ค.
kun๋ ์๋ ํ์ธ์?1. ์๋์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ฐํํ๋ฉด ๊ฐ๋ฅํฉ๋๋ค. ์๋์ํ๊ธ ํ๋ก๊ทธ๋จ์ ํตํด ํด๋น ํ์ผ์ hwpx ํฌ๋งท์ผ๋ก ์ ์ฅํ๋ค.ํ์ฅ์๋ฅผ zip์ผ๋ก ๋ฐ๊พธ๊ณ ์์ถ์ ํด์ ํ๋ค.Scripts ํด๋์ sourceScripts ํ์ผ์ ์ญ์ ํ๋ค.๋ค์ zip ํฌ๋งท์ผ๋ก ์์ถํ ํ, ํ์ฅ์๋ฅผ hwpx๋ก ๋ฐ๊พผ๋ค.๋ค์ ์๋์ํ๊ธ ํ๋ก๊ทธ๋จ์ ํตํด ์๋ ํฌ๋งท์ผ๋ก ๋ณํํ๋ค. 2. ํ์ ์ ๋์ฐ์ง ์๋ ๋ฐฉ๋ฒ์ ํด๋น ํ์ ์ [Y/N] ํ์ ์ผ๋ก hwp.SetMessageBoxMode(0x20)์ฝ๋๋ฅผ ๋ฏธ๋ฆฌ ์คํํ์ฌ "No"๋ฅผ ์๋์ ํํ ์ ์์ต๋๋ค. ํ์ด์ฌ์ผ๋ก๋ zipfile ๋ฑ์ ๋ชจ๋๋ก ์์ถํด์ ๋ฐ ์์ถ์ ๋ฌธ์ ์์ด ํด๊ฒฐ์ด ๋จ์ ํ์ธํ์์ต๋๋ค. ์๋๋ ํ๋ค๋ฅ ์์ฑํด๋ณธ ๊ด๋ จ ์ฃผํผํฐ๋ ธํธ๋ถ ํ์ผ์ ๋๋ค.๋ฌธ์์คํฌ๋ฆฝํธ๋ฅผ ์ ๊ฑฐํ hwp ํ์ผ๋ค์ด ์๋ ํด๋ ์์ ๋ฃ๊ณ ์ ํ๋์ฉ ์คํํ์๋ฉด ๋ฉ๋๋ค. [๋ ธํธ๋ถ ํ์ผ] ์ถ๊ฐ ๋ฌธ์ ์์ผ์๋ฉด ์์ ๋กญ๊ฒ ๋๊ธ ๋จ๊ฒจ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.ํ๋ณตํ ํ๋ฃจ ๋์ธ์^^
- 1
- 2
- 188
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
- 187
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
- 257
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
- 335





