2015. 6. 25. 10:05ㆍ카테고리 없음
public static void main(String[] args){
OutputStream fileOut = null;
/** 헤더 설정 */
response.setHeader("Content-Disposition", "attachment; filename=excelTotalResult.xls");
List<HashMap> resultList = 리스트 추출;
HSSFWorkbook workbook = getWorkbook(resultList); // workbook 생성
HSSFSheet sheet = workbook.createSheet("사원현황");
HSSFRow row;
HSSFCell cell;
/** STYLE START */
HSSFCellStyle titleStyle = workbook.createCellStyle();
HSSFCellStyle cellStyle = workbook.createCellStyle();
HSSFCellStyle contentStyle = workbook.createCellStyle();
HSSFCellStyle contentStyle_2 = workbook.createCellStyle();
/** 폰트 설정*/
// 타이틀 폰트
HSSFFont titleFont = workbook.createFont();
titleFont.setFontHeightInPoints((short)13);
titleFont.setFontName("맑은 고딕");
// 컬럼명 폰트
HSSFFont colNameFont = workbook.createFont();
colNameFont.setFontHeightInPoints((short)10);
colNameFont.setFontName("맑은 고딕");
// 내용 폰트
HSSFFont contentFont = workbook.createFont();
/** 타이틀 폰트 스타일 지정 */
titleStyle.setFont(titleFont);
/** 컬럼 셀 테두리 / 폰트 스타일 지정 */
cellStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index); // 셀 색상
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); //테두리 설정
cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
cellStyle.setFont(colNameFont);
/** 내용 셀 테두리 / 폰트 지정 */
contentStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); //테두리 설정
contentStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
contentStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
contentStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
contentStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
contentStyle.setFont(contentFont);
/** 내용 셀 테두리 / 폰트 지정 왼쪽정렬*/
contentStyle_2.setBorderRight(HSSFCellStyle.BORDER_THIN); //테두리 설정
contentStyle_2.setBorderLeft(HSSFCellStyle.BORDER_THIN);
contentStyle_2.setBorderTop(HSSFCellStyle.BORDER_THIN);
contentStyle_2.setBorderBottom(HSSFCellStyle.BORDER_THIN);
contentStyle_2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
contentStyle_2.setAlignment(HSSFCellStyle.ALIGN_LEFT);
contentStyle_2.setFont(contentFont);
/** STYLE END */
//생성한 workbook 엑셀생성 / 스타일 적용
int sheet_row = 0;
for(int i = 0 ; i <= workbook.getSheetAt(0).getLastRowNum() ; i++, sheet_row++){
row = sheet.createRow(i);
for(int j = 0 ; j < workbook.getSheetAt(0).getRow(i).getLastCellNum() ; j++){
cell = row.createCell(j);
if(i == 0){
cell = row.createCell(j);
cell.setCellStyle(titleStyle);
}else if(i == 2){
cell = row.createCell(j);
cell.setCellStyle(cellStyle);
}else{
cell.setCellStyle(contentStyle);
}
// 셀 사이즈 자동 조절
sheet.autoSizeColumn((short)j);
sheet.setColumnWidth(j, (sheet.getColumnWidth(j))+512 );
// 데이터복사
cell.setCellValue(workbook.getSheetAt(0).getRow(i).getCell(j).toString());
}
}
/** 출력 */
fileOut = response.getOutputStream();
workbook.write(fileOut);
fileOut.close();
}
public static HSSFWorkbook getWorkbook(List list) throws Exception {
HSSFWorkbook workbook = new HSSFWorkbook();
// 헤더 배열
String[] header = { "번호", "이름", "사번" }; // 헤더
String[] column = { "name", "emp_num" }; // 컬럼명
workbook = PoiUtil.createWorkBook("사원 현황", "1. 사원명단", header, column, list); // 엑셀생성
return workbook;
}
/**
* POI WORK 생성 Parameter : String 시트명, String 제목, String []헤더 , String[]
* 헤더명, 리스트
*/
public static HSSFWorkbook createWorkBook(String sheetName, String title, String[] header, String[] colName, List resultList) {
HSSFRow row;
HSSFCell cell;
/** 엑셀 파일 생성 START */
HSSFWorkbook workbook = new HSSFWorkbook();
/** 시트 생성 */
HSSFSheet sheet = workbook.createSheet(sheetName);
// 행 인덱스
int sheet1_row = 0;
/** 제목 */
row = sheet.createRow(sheet1_row);
cell = row.createCell(0);
cell.setCellValue(title);
sheet1_row++;
// 공백
row = sheet.createRow(sheet1_row);
sheet1_row++;
/** 헤더 START */
row = sheet.createRow(sheet1_row);
for (int i = 0; i < header.length; i++) {
cell = row.createCell(i);
cell.setCellValue(header[i]);
}
sheet1_row++;
/** 헤더 END */
for (int i = 0; i < resultList.size(); i++) {
HashMap map = (HashMap) resultList.get(i);
row = sheet.createRow(sheet1_row);
/** 번호 */
cell = row.createCell(0);
cell.setCellValue(String.valueOf(i + 1));
for (int j = 0; j < colName.length; j++) {
cell = row.createCell(j + 1);
if (null != map.get(colName[j])) {
cell.setCellValue(map.get(colName[j]).toString());
} else {
cell.setCellValue("");
}
}
sheet1_row++;
}
return workbook;
}