안녕하세요.
오늘은 한글파일 내에 표의 내용을 엑셀로 옮기는 작업을 해볼까 합니다.
지원서 같은 것을 한글로 접수받고 엑셀로 정리를 한다고 하였을 때
지원가 많다보면 많이 번거로울 것입니다.
이것을 자동화해보도록 하겠습니다.
우선 지원서가 아래와 같다고 해봅시다!!
그리고 이 한글파일을 정리할 엑셀파일은 다음과 같습니다.
아래는 표의 내용을 엑셀파일로 자동으로 옮겨주는 코드입니다.
아래 코드는 전에 작성했던 코드랑 동일하므로 설명은 생략하겠습니다.
# -*- coding: cp949 -*-
import win32com.client as win32
import os
import fnmatch
엑셀을 사용할 수 있는도록 엑셀개체를 생성합니다.
xl=win32.gencache.EnsureDispatch("Excel.Application")
그리고 E드라이브에 있는 엑셀파일을 열어줍니다.
xl.Workbooks.Open("e:정리.xlsx")
여기까지 코드를 실행하면 엑셀이 실행이 안된것 처럼 보여집니다.
그러나 보이지만 않을 뿐 백그라운드 상으로는 파일을 열고 있습니다.
만약에 엑셀을 보고 싶다 그러면 아래 코드를 추가로 써줍니다.
xl.Visible=True
그리고 한글개체를 생성하고요.
hwp = win32.gencache.EnsureDispatch("HWPFrame.HwpObject")
E드라이브의 접수 폴더 밑에 있는 모든 한글파일을 열어 줍니다.
dir1=os.getcwd()
dir1="E:₩₩접수₩₩"
filename=fnmatch.filter(os.listdir(dir1),'*.hwp')
print(filename)
지원서 파일에는 아래와 같은 항목이 존재합니다.
data=["이름","생년월일", "직장명", "직위", "주소","연락처"]
모든 파일을 열면서
i=1
for file in filename:
hwp.Open(dir1+file, "HWP", "forceopen:true")
hwp.HAction.GetDefault("RepeatFind", hwp.HParameterSet.HFindReplace.HSet);
option=hwp.HParameterSet.HFindReplace
j=0
각 항목을 검색합니다.
for item in data:
option.FindString = data[j]
option.IgnoreMessage = 1;
option.Direction = hwp.FindDir("AllDoc");
hwp.HAction.Execute("RepeatFind", hwp.HParameterSet.HFindReplace.HSet);
각 항목을 찾았으면 해당 항목에서 오른쪽 버튼을 한 번 누름니다.
그러면 찾았던 항목의 옆 칸으로 이동하겠죠?
여기에 우리가 원하는 내용이 있습니다!!
hwp.HAction.Run("MoveRight");
그리고 해당 칸의 마지막까지 선택을 해주고요
hwp.HAction.Run("MoveSelLineEnd");
카피를 해줍니다. Ctrl + C 와 같습니다.
hwp.HAction.Run("Copy");
그리고 엑셀에서 붙여넣기 할 셀을 선택해주고요
xl.ActiveSheet.Cells(i+1, j+1).Select()
붙여넣기 해줍니다. Ctrl + V 와 같습니다.
xl.ActiveSheet.Paste()
반복해줍니다.
j=j+1
i=i+1
한글을 종료해주고요.
hwp.Quit()
엑셀은 저장해줍니다.
xl.ActiveWorkbook.SaveAs("e:정리.xlsx")
엑셀을 종료하고요
xl.ActiveWorkbook.Close()
코딩은 여기까지입니다.
코드를 실행해보면....
엑셀에 한그파일 지원서의 내용이 잘 들어가 있는 것을 확인하실 수 있습니다.
지원서 파일이 많으면 확실히 도움이 될거라 생각됩니다.
첨부파일 참고하시고요.
감사합니다.
import win32com.client as win32
import os
import fnmatch
xl=win32.gencache.EnsureDispatch("Excel.Application")
xl.Workbooks.Open("e:정리.xlsx")
#xl.Visible=True
hwp = win32.gencache.EnsureDispatch("HWPFrame.HwpObject")
dir1=os.getcwd()
dir1="E:₩₩접수₩₩"
filename=fnmatch.filter(os.listdir(dir1),'*.hwp')
print(filename)
data=["이름","생년월일", "직장명", "직위", "주소","연락처"]
i=1
for file in filename:
hwp.Open(dir1+file, "HWP", "forceopen:true")
hwp.HAction.GetDefault("RepeatFind", hwp.HParameterSet.HFindReplace.HSet);
option=hwp.HParameterSet.HFindReplace
j=0
for item in data:
option.FindString = data[j]
option.IgnoreMessage = 1;
option.Direction = hwp.FindDir("AllDoc");
hwp.HAction.Execute("RepeatFind", hwp.HParameterSet.HFindReplace.HSet);
hwp.HAction.Run("MoveRight");
hwp.HAction.Run("MoveSelLineEnd");
hwp.HAction.Run("Copy");
xl.ActiveSheet.Cells(i+1, j+1).Select()
xl.ActiveSheet.Paste()
j=j+1
print(i)
i=i+1
hwp.Quit()
xl.ActiveWorkbook.SaveAs("e:정리.xlsx")
xl.ActiveWorkbook.Close()
'파이썬 > 한글 자동화' 카테고리의 다른 글
[파이썬] 한글파일 하나로 합치기 (3) | 2020.07.24 |
---|---|
[파이썬] 한글파일 내 그림 추출하기 (0) | 2020.07.22 |
[파이썬] 여러 한글파일 내 전화번호 삭제하기 (0) | 2020.07.15 |
[파이썬] 한글파일 내 특정 문자열 찾아 바꾸기 (0) | 2020.01.04 |
[파이썬] 파이썬으로 한글파일 프린트하기 (1) | 2019.12.25 |