POI를 이용하여 엑셀파일 생성하기

POI 이용 엑셀 파일 생성

데이터를 넘겨받아 엑셀파일로 만드는 방법에 관해 포스팅을 해보겠습니다.

먼저 POI를 이용하기 위하여 POI라이브러리가 필요합니다.

POI jar파일은 http://poi.apache.org/download.html 에서 다운받은 후 라이브러리에 추가해주시면 됩니다.

POI의 엑셀생성방식은 엑셀 97~03버전으로 생성되는 HSSF,엑셀 2007이상의 XSSF 그리고 가장 최근에 나온 SXSSF 세가지 방식이 있다.

이번에 포스팅할 방식은 보편화되어있는 엑셀2007이상의 XSSF 방식이다.

엑셀에 데이터를 세팅하는 방법은 각자의 방법이 있기 때문에 이번 포스팅은 나의 방식대로 포스팅 하겠다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/**
* @param filePath=엑셀파일을 생성시킬 위치
* @param excelName=생설할 엑셀파일의 이름
* @param headerList=엑셀파일의 헤더맵
* @param list=데이터를 담을 맵
* @param data=엑셀파일을 생성할 데이터를 담은 리스트
* 꼭 맵을통하여 세팅을 하지 않아도 상관없습니다.
*/
String filePath = "파일을 생성시킬 위치";
String excelName = "생성할 엑셀의 이름";
Map<String,String> headerList = new HashMap<String,String>();
Map<String,String> list = new HashMap<String,String>();
List<dataType> data = "생성할 리스트를 담습니다.";
//headerList를 세팅할 만큼 세팅합니다.
headerList.put("0", "이름");
headerList.put("1", "이름");
.
.
.
.
//XSSFWorkbook 세팅
XSSFWorbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("sheet의 이름");
XSSFRow row = null;
XSSFCell cell = null;
for(int i=0; i<=data.size(); i++) {
//data의 크기만큼 로우를 생성합니다.
row=sheet.createRow((short)i);
for(int k=0; k<headerList.size(); k++) {
//headerList의 크기만큼 i번째 row에 cell을 생성합니다.
cell=row.createCell(k);
//맨윗줄에 headerList를 세팅합니다.
if(i==0) {
//CellStyle은 필요에따라서 세팅합니다.
CellStyle style = workbook.createCellStyle();
style.setFillForegroundColor("셀color 세팅");
style.setFillPattern("셀의 패턴을 세팅");
style.setAlignment("셀데이터의 정렬조건 세팅");
cell.setCellStyle(style);
sheet.setColumnWidth(index,"셀의 너비");
//headerList의 데이터를 세팅
cell.setCellValue(headerList.get(Integer.toString(k)));
}
//엑셀파일에 넣을 데이터를 세팅합니다.
else {
//i-1을하는이유는 headerList가 i번쨰 row이기 때문.
<dataType> excelData = data.get(i-1);
//리스트의 크기만큼 세팅합니다.
list.put("0","넣을데이터");
list.put("1","넣을데이터");
.
.
.
cell.setCellValue(list.get(Integer.toString(k)));
}
}
}
//엑셀파일 세팅 후 파일 생성
try {
File file = new File(filePath);
//file을 생성할 폴더가 없으면 생성합니다.
file.mkdirs();
FileOutputStream fileOutputStream =
new FileOutputStream(file+File.separator+excelName);
//생성한 엑셀파일을 outputStream 해줍니다.
workbook.write(fileOutputStream);
fileOutputStream.close();
} catch(Exception e) {
e.printStackTrace();
}

이렇게 POI XSSF를 통하여 엑셀파일을 생성할 수 있다.
왠만한 데이터는 처리 가능하지만 XSSF가 처리가능한 크기를 넘어가면
OutOfMemory에러가 나기 때문에 이걸 보완한 SXSFF 를 사용할 수 도 있다.

Share