728x90
반응형
실제 프로젝트를 진행하다 보면 MS워드파일을 생성해야 하는 경우가 발생한다.
이때 사용하는 라이브러리가 Apache POI 이며 2023년 11월 7일 기준으로 최신버전은 5.2.4 버전이다.
Apache POI - https://poi.apache.org/
개발환경
- JDK 11 / Maven
- Apache POI 5.2.4
pom.xml 설정
<!-- 의존성 -->
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.4</version>
</dependency>
<!-- MS워드파일 생성시 추가 poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.4</version>
</dependency>
<!-- 로깅 기본 설정 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.21.1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.13.0</version>
</dependency>
</dependencies>
소스 - WordHelloWorld.java
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
/**
* <pre>
* [2023.11.03]
* * Hello World!! 워드파일 생성 예제
* * 생성된 워드파일은 사용자 임시폴더의 년월일시분초_HelloWorld.docx 파일로 생성된다.
* - 경로 예) C:\Users\wyleedp\AppData\Local\Temp\20231106101051_HelloWorld.docx
* </pre>
*/
public class WordHelloWorld {
public void exec() {
System.out.println("워드파일 생성 시작");
FileOutputStream fos = null;
XWPFDocument documentWord = null;
try {
String tmpHome = System.getProperties().getProperty("java.io.tmpdir");
String wordFileName = DateFormatUtils.format(new Date(), "yyyyMMddHHmmss") + "_HelloWorld.docx";
String wordFilePath = tmpHome + wordFileName;
documentWord = new XWPFDocument();
XWPFParagraph XWPFParagraph = documentWord.createParagraph();
XWPFParagraph.setAlignment(ParagraphAlignment.LEFT);
XWPFRun helloRun = XWPFParagraph.createRun();
helloRun.setFontFamily("맑은 고딕");
helloRun.setColor("2FB2F3");
helloRun.setFontSize(20);
helloRun.setText("Hello World!!!");
fos = new FileOutputStream(wordFilePath);
documentWord.write(fos);
System.out.println("워드파일 생성완료 : " + wordFilePath + " [" + FileUtils.byteCountToDisplaySize(new File(wordFilePath).length()) + "]");
}catch(Exception e) {
e.printStackTrace();
} finally {
IOUtils.closeQuietly(fos);
try {
documentWord.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
public static void main(String[] args) {
WordHelloWorld wordHelloWorld = new WordHelloWorld();
wordHelloWorld.exec();
}
}
생성된 워드파일
생성된 워드파일 화면
소스 전체를 GitHub에서 확인할 수 있다.
728x90
반응형