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
(다운로드 받는 링크)
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
https://poi.apache.org/components/document/quick-guide-xwpf.html
'Programming > java' 카테고리의 다른 글
[JAVA] 문자열 숫자만 남기고 다 제거, replaceAll (0) | 2023.02.27 |
---|---|
[java] 삼항연산자 사용방법 (0) | 2023.02.06 |
[log4j2] log4j + mybatis 쿼리 로그 찍기 (0) | 2022.04.02 |
[log4j] java log4j2 적용하기 / log4j2 properties / log4j 옵션, 설정 (0) | 2022.04.02 |
[java] fileUpload 파일 업로드 유틸 만들기 (0) | 2022.04.01 |