[java] poi 라이브러리 - XWPF 워드파일 데이터 쓰고 가져오기

728x90
반응형

 

poi 라이브러리는 무엇일까?

 

아파치 POI(Apache POI)는 아파치 소프트웨어 재단에서 만든 라이브러리로서

마이크로소프트 오피스 파일 포맷을 순수 자바 언어로서 읽고 쓰는 기능을 제공한다.

주로 워드, 엑셀, 파워포인트와 파일을 지원하며 최근의 오피스 포맷인 Office Open XML File Formats (OOXML, 즉 xml 기반의 *.docx, *.xlsx, *.pptx 등) 이나 아웃룩, 비지오, 퍼블리셔 등으로 지원 파일 포맷을 늘려가고 있다. (출처 - 위키백과)

 

poi 라이브러리의 컴포넌트들

POIFS OLE 2 Compound document 파일 포맷을 읽고 쓰는 컴포넌트. 모든 오피스 파일 포맷은 OLE2 방식이므로 하위 모든 컴포넌트의 기반
XWPF
워드파일을 읽고 쓰는데 사용되는 컴포넌트
HSSF 엑셀 파일포맷을 읽고 쓰는 컴포넌트. 엑셀 97버전부터 현재까지 지원
XSSF 엑셀 2007부터 지원하는 오피스 오픈 XML 파일 포맷인 *.xlsx 파일을 읽고 쓰는 컴포넌트
HPSF 오피스 파일의 문서요약 정보를 읽는데 사용되는 컴포넌트
HWPF 워드 97(*.doc) 파일을 읽고 쓰는데 사용되는 컴포넌트
HSLF 파워포인트 파일을 읽고 쓰는데 사용되는 컴포넌트
HDGF 비지오 파일을 읽는데 사용하는 컴포넌트
HPBF 퍼블리셔 파일을 다루는데 사용되는 컴포넌트
HSMF 아웃룩에서 사용되는 *.msg 파일을 다루는데 사용되는 컴포넌트
DDF 이미지 파일을 읽어오는데 사용하는 컴포넌트

(출처 - 위키백과, https://poi.apache.org/components/document/quick-guide-xwpf.html)

 

poi를 검색해보면 주로 엑셀 데이터를 사용할때 쓰는 경우가 많았다.

내가 사용한건 워드파일을 읽고 사용할 때 쓰는 XWPF 이다.

 

poi 라이브러리를 사용하기 위해서는 jar파일을 다운받아서 프로젝트에 넣어야한다.

https://poi.apache.org/download.html

 

Apache POI - Download Release Artifacts

<!--+ |breadtrail +--> <!--+ |start Menu, mainarea +--> <!--+ |start Menu +--> <!--+ |end Menu +--> <!--+ |start content +--> Apache POI - Download Release Artifacts Available Downloads This page provides instructions on how to download and verify the Apac

poi.apache.org

(다운로드 받는 링크)

 

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;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;

public class PoiSample {

	public void sample(){
    	XWPFDocument doc = new XWPFDocument(new FileInputStream(file));
        FileOutputStream clsOut = new FileOutputStream(otherFile);

        XWPFParagraph paragraph = doc.createParagraph();
        XWPFRun run = paragraph.createRun();
        run.setFontSize(10);			  //font 크기
        run.setFontFamily("바탕체");		//글씨체 설정

        List<XWPFTable> tableList = doc.getTables(); //파일을 읽어서 워드에 입력된 표를 가져온다.

        for(XWPFTable table : tableList) {		//표만큼 반복문
            table.createRow();	//행 추가

            for(int i = 0; i < table.getNumberOfRows(); i++) {	//표의 행만큼 반복문
                XWPFTableRow row = table.getRow(i).getCell(0).getText();	//행을 가져온다.
                row.setHeight(430);		//행 높이를 설정할 수 있다.

                    for(int colIdx=0; colIdx < row.getTableCells().size(); colIdx++){
                        XWPFTableCell cell = row.getCell(colIdx);	//행의 열을 가져온다.
                        cell.getText();	//해당 행-열의 텍스트를 가져올 수 있다.
                        cell.setText("글씨넣기");	//해당 행-열에 텍스트를 넣을 수 있다.

                        cell.getParagraphs().get(0).setAlignment(ParagraphAlignment.CENTER);	//가운데 정렬
                    }
            }    
        }

        doc.write(clsOut);	//setText로 넣은 데이터를 찍어낸다.
        clsOut.close();
    }
}

내가 사용해 본 기능들은 이렇다.

1. 파일을 읽어서 가져온다.

2. 이미 입력된 table을 가져온다.

3. 해당 table에 행을 추가로 생성 할 수 있다.

4. 글씨체와, 정렬 등등 스타일도 지정할 수 있다.

5. 입력된 데이터를 추출한다. (getText())

6. 데이터를 입력한다. (setText())

 

이러한 기능 말고도 무수히 많은 기능들이 있으니 하나하나 해보는 것도 좋은 것 같다.!

 

----------------------------------------------------------------------------------

Ref

https://m.blog.naver.com/jwyoon25/221336857782

 

apache-poi로 워드파일 다루기

이전 포스팅에서 JDOM을 이용해서 XML을 파싱했었는데, 그 프로그램으로 1000개 정도되는 XML을 ...

blog.naver.com

 

https://poi.apache.org/components/document/quick-guide-xwpf.html

 

POI-XWPF - A Quick Guide

POI-XWPF - A Quick Guide Overview XWPF has a fairly stable core API, providing read and write access to the main parts of a Word .docx file, but it isn't complete. For some things, it may be necessary to dive down into the low level XMLBeans objects to man

poi.apache.org

 

728x90
반응형