지난 포스팅에서 perl 을 이용한 워드 문서 생성 자동화에 대해 간략히 소개 드렸었는데요.



2012/01/11 - [컴퓨터일반] - Perl을 이용한 MS word 문서 생성 자동화


 

아래 주소의 글을 보니 Autohotkey_L 을 이용한 MS word 에 대한 예제 코드가 있더군요.

 

http://www.autohotkey.com/community/viewtopic.php?t=61509&start=30&p=393082#p393082

 

위 링크의 예제에서 끝에 파일로 저장하도록 수정해 봤습니다.

 

코드는 다음과 같구요~

 

oWord := ComObjCreate("Word.Application") ; create MS Word object

oWord.Documents.Add ; create new document

 

oWord.Selection.Font.Bold := 1 ; bold

oWord.Selection.TypeText("Visit ") ; type text

oWord.ActiveDocument.Hyperlinks.Add(oWord.Selection.Range, "http://www.autohotkey.com/forum/topic61509.html"

,"","","COM Object Reference [AutoHotkey_L]") ; insert hyperlink

oWord.Selection.TypeText("and learn how to work with ") ; type text

oWord.Selection.Font.Italic := 1 ; italic

oWord.Selection.TypeText("COM objects") ; type text

oWord.Selection.Font.Bold := 0, oWord.Selection.Font.Italic := 0 ; bold and italic off

oWord.Selection.TypeText(".") ; type text

oWord.Selection.TypeParagraph ; type paragraph (enter, new line)

 

;~ oWord.Visible := 1, oWord.Activate ; make it visible and activate it.

 

oWord.ActiveDocument.saveas("c:\autohotkeyMSWORD.docx")

oWord.Quit()

 

보시면 아시겠지만 autohotkeyMSWORD.docx 라는 워드 파일이 만들어집니다.

 

매번 반복해서 작성하게 되는 문서는 이런 자동화 툴들을 이용하면 편리하겠죠~

 

작성된 결과는 이렇게 보이더군요~




 


MS word 자동화에 대해 찾다 보니 C#, C++, VB 등을 이용한 문서 생성 방법 등이 나오더군요~

 

그러다 찾은 게 Perl 을 이용한 MS word 문서 생성 방법 입니다.

 

역시 Perl 은 역사가 깊은 만큼~ 없는 게 없군요. 굉장히 쉽고 편리하게 MS word 문서를 생성 할 수 있습니다.

 

Cpan 에서 Win32::OLE 을 설치 한 이후에 아래와 같이 코딩을 하면 문서가 뚝딱~ 만들어 집니다.

 

use warnings;

use strict;

use Win32::OLE;

 

my $word = CreateObject Win32::OLE 'Word.Application' or die $!;

$word->{'Visible'} = 0; # 화면에 보이진 않게 함, 1 로 설정하면 화면에 보이게 됨

 

my $document = $word->Documents->Add;

 

my $selection = $word->Selection;

 

$selection -> TypeText("워드 문서 생성~"); # 본문 내용

$selection -> TypeParagraph;

$selection -> TypeText("This is word document generated by perl"); # 본문 내용

$selection -> TypeParagraph;

 

$selection -> TypeText("제목"); # 본문 내용

$selection -> {'Style'} = "제목 1"; # 현재의 selection 부분에 스타일 설정

 

$selection -> TypeParagraph;

 

my $heading_1 = $document->Styles("제목 1");

my $heading_1_font = $heading_1->Font;

 

$heading_1_font -> {Name} = "맑은 고딕";

$heading_1_font -> {Size} = 20;

$heading_1_font -> {Bold} = 1;

 

$document->SaveAs('c:\generated.docx'); # c:\generated.docx 로 저장

$word->Quit();

 

 

위 코드 실행하면 다음과 같은 워드 문서가 만들어 집니다.

 

 

인터넷에서 찾은 간단한 예제 가지고 만든 거라 별거 안 나오지만 ~

 

Win32::OLE 모듈에 대해 좀더 공부한다면 훌륭한 문서 생성 자동화 방법이 될 것 같네요~


+ Recent posts