본문 바로가기
코딩과 알고리즘

워드 편집하는 PHP, 음?

오늘은 재미난걸 소개해드리려 합니다.
바로 PHP 가 MS-WORD 를 실행해서 문서를 작성하는 건데요.

폰트크기를 지정하거나 밑줄을 긋기도 하고
심지어 문서를 열어 놓은채로 두거나 저장도 할 수 있습니다.

이를 위해 2가지 전제조건이 필요한데요.
첫째 윈도우 PC 환경에 XAMPP 를 설치하고,
둘째는 윈도우에 MS-WORD 가 설치되어 있어야 합니다.

XAMPP 설치는 아래 게시글을 참조해 주시면 됩니다.

https://itadventure.tistory.com/627

 

윈도우에 PHP 8 설치 + MYSQL 연결 예제 ( APM 설치 - 2023. 9. 1기준)

오늘은 윈도우에서의 PHP(피에이치피) 설치에 대해 알아보겠습니다. 2023. 9. 1 기준 최신 PHP 버전은 8.2 인데요. 8.3 버전이 있긴 한데 아직 알파 버전(실험 버전)이라 논외입니다. PHP 설치시 아래 2가

itadventure.tistory.com

 


extension 설정

PHP에서 MS-WORD 를 실행하려면 extension 설정을 해주어야 하는데요.
C:\xampp\php\php.ini 파일을 열어, 아래 내용을 추가해주어야 합니다.

extension=php_com_dotnet.dll

어디에 추가하냐구요? extension 들이 여럿 있는 곳이 있을텐데요. 중간이나 맨 아래 적당한 곳에 넣어 주시면 됩니다.

그리고 아파치 서버를 재시작해주시면 설정은 끝!


소스 실행

이제 아래와 같은 소스를 구성해서 웹에서 실행해 보세요.

<?php
$word = new COM("word.application", NULL, CP_UTF8);
$word->visible = true;
$word->Application->Activate();

$word->Documents->Add();

$document = $word->ActiveDocument;
$content = $document->Content;

$objSelection = $word->Selection;

$objSelection->Font->Size = 15;
$objSelection->Font->Underline = 1;
$objSelection->TypeText("일기\n");

$objSelection->Font->Size = 12;
$objSelection->Font->Underline = 0;
$objSelection->TypeText("2024년 6월 22일\n");

그러면 MS-WORD 가 자동 실행, 작업 표시줄에서 깜박이는 것을 확인할 수 있는데요.

선택하면 두둥! 이와 같이 문서가 작성된 것을 확인할 수 있습니다.

신기하지 않나요? :)
PHP는 이와 같이 MS-WORD 를 실행해 문서를 작성할 수 있는데요.
약간 응용하면 문서 자동화 같은걸 만들 수도 있을 것 같네요.
EXCEL도 비슷한 원리도 작동할 수 있습니다.

몇가지 팁을 더 드리자면 기존 MS-WORD 문서를 여는 명령은 아래와 같습니다.

$path = realpath("C:\Users\home\Documents\문서.docx");
$word->Documents->Open($path);

문서 저장 명령은 아래와 같고,

$document->SaveAs($path);

문서 닫기나

$document->Close(false);

MS-WORD 종료하는 명령어도 있습니다.

$word->Quit();

다만 PHP를 통해 이를 가이드하는 문서가 일부 검색이 됩니다.
이 게시글이 좀 내용이 들어 있는것 같군요.

https://www.php.net/manual/en/class.com.php

그 외 COM 객체에 대한 문서는 아래를 참조하시면 됩니다.

https://www.php.net/manual/en/book.com.php

그리고 MS-WORD 를 제어하는 구체적인 건 VBA 쪽이 도리어 자료가 많은데 그쪽 소스를 PHP용으로 바꿔서 적용해야 합니다. 실제로는 VBA 기술을 이용하는 것이니까요.
 'vba ms-word' 로 검색해 보세요 :)


필요하신 분에게 도움이 되셨을지 모르겠습니다.

오늘도 방문하신 모든 분들께 감사드립니다!