●poi hssf로 대량의 데이터를 다운로드 했을때 나타난 에러

java.lang.OutOfMemoryError: GC overhead limit exceeded




●hssf와 xssf는 메모리에 데이터를 한번에 담아서 처리하기 때문에 데이터 양이 많으면 메모리 부족 현상이 나타난다.

그래서 아파치에서는 자동으로 메모리에 일정량의 데이터가 차면 비워주는 sxssf를 제공한다.



http://poi.apache.org/spreadsheet/how-to.html#sxssf





Posted by -현's-

댓글을 달아 주세요

●index.html


<!DOCTYPE html>

<html>

<head>

<meta charset="EUC-KR">

<title>엑셀 다운</title>

</head>

<body>




<a href="testxls.jsp">엑셀 다운</a>





</body>

</html>










●testxls.jsp



<%@ page language="java" contentType="text/html; charset=EUC-KR"    

pageEncoding="EUC-KR"%>

     <%@ page import="java.util.*,com.sun.org.apache.xalan.internal.xsltc.compiler.Parser,

java.io.*,

java.util.List,

java.util.HashMap,

org.apache.poi.hssf.usermodel.*,

org.apache.poi.hssf.*,

org.apache.poi.hssf.util.HSSFColor,

org.apache.poi.hssf.util.Region" %>




<%

/* jsp 로직 Start*/




String sFileName = "엑셀파일" + ".xls";

sFileName = new String ( sFileName.getBytes("KSC5601"), "8859_1");


out.clear();

out = pageContext.pushBody();

response.reset(); // 이 문장이 없으면 excel 등의 파일에서 한글이 깨지는 문제 발생.


String strClient = request.getHeader("User-Agent");


String fileName = sFileName;


if (strClient.indexOf("MSIE 5.5") > -1) {

//response.setContentType("application/vnd.ms-excel");

response.setHeader("Content-Disposition", "filename=" + fileName + ";");

} else {

response.setContentType("application/vnd.ms-excel");

response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ";");

}


OutputStream fileOut = null;


//워크북 생성

HSSFWorkbook objWorkBook = new HSSFWorkbook();

//워크시트 생성

HSSFSheet objSheet = objWorkBook.createSheet();

//시트 이름

objWorkBook.setSheetName(0 , "1번시트" , HSSFWorkbook.ENCODING_UTF_16 );

//행생성

HSSFRow objRow = objSheet.createRow((short)0);

//셀 생성

HSSFCell objCell = null;



//------------------------------------------------------------------------------------


//병합


//제목

objSheet.addMergedRegion(new Region(0,(short)0,0,(short)7));  //제목


//상단

objSheet.addMergedRegion(new Region(1,(short)0,3,(short)0));    //구분

objSheet.addMergedRegion(new Region(1,(short)1,3,(short)1));    //2012년 폐기수량

objSheet.addMergedRegion(new Region(1,(short)2,3,(short)2)); //2013년 폐기수량

objSheet.addMergedRegion(new Region(1,(short)3,1,(short)7)); //평가전

objSheet.addMergedRegion(new Region(2,(short)3,3,(short)3)); //2013년 평가대상

objSheet.addMergedRegion(new Region(2,(short)4,2,(short)7)); //보존기간

objSheet.addMergedRegion(new Region(3,(short)4,3,(short)4)); //10년

objSheet.addMergedRegion(new Region(3,(short)5,3,(short)5)); //5년

objSheet.addMergedRegion(new Region(3,(short)6,3,(short)6)); //3년

objSheet.addMergedRegion(new Region(3,(short)7,3,(short)7)); //1년




//-----------------------------------------------------------------

//스타일 설정



//스타일 객체 생성 

HSSFCellStyle styleHd = objWorkBook.createCellStyle();    //제목 스타일

HSSFCellStyle styleSub = objWorkBook.createCellStyle();   //상단 스타일

HSSFCellStyle styleCon = objWorkBook.createCellStyle();   //내용 스타일

HSSFCellStyle styleBody = objWorkBook.createCellStyle();   //왼쪽 스타일

HSSFCellStyle stylesum = objWorkBook.createCellStyle();   //소계 스타일




//제목 폰트

HSSFFont font = objWorkBook.createFont();

font.setFontHeightInPoints((short)15);

font.setBoldweight((short)font.BOLDWEIGHT_BOLD);

//제목 스타일에 폰트 적용, 정렬

styleHd.setFont(font);

styleHd.setAlignment(HSSFCellStyle.ALIGN_CENTER);

styleHd.setVerticalAlignment (HSSFCellStyle.VERTICAL_CENTER);





//상단 폰트

HSSFFont font2 = objWorkBook.createFont();

font2.setBoldweight((short)font.BOLDWEIGHT_BOLD);

//상단 스타일 설정

styleSub.setBorderBottom(HSSFCellStyle.BORDER_THIN);

styleSub.setBottomBorderColor(HSSFColor.BLACK.index);

styleSub.setBorderLeft(HSSFCellStyle.BORDER_THIN);

styleSub.setLeftBorderColor(HSSFColor.BLACK.index);

styleSub.setBorderRight(HSSFCellStyle.BORDER_THIN);

styleSub.setRightBorderColor(HSSFColor.BLACK.index);

styleSub.setBorderTop(HSSFCellStyle.BORDER_THIN);

styleSub.setTopBorderColor(HSSFColor.BLACK.index);

//셀에 색 넣기

styleSub.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);// not BackgroundColor

styleSub.setFillForegroundColor(HSSFColor.YELLOW.index);

//글자 속성

styleSub.setFont(font2);

styleSub.setAlignment (HSSFCellStyle.ALIGN_CENTER);

styleSub.setVerticalAlignment (HSSFCellStyle.VERTICAL_CENTER);

styleSub.setWrapText(true); 





//왼쪽 스타일 설정

styleBody.setAlignment (HSSFCellStyle.ALIGN_LEFT);

styleBody.setVerticalAlignment (HSSFCellStyle.VERTICAL_CENTER);

styleBody.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);// not BackgroundColor

styleBody.setFillForegroundColor(HSSFColor.LIGHT_ORANGE.index);

styleBody.setBorderBottom(HSSFCellStyle.BORDER_THIN);

styleBody.setBottomBorderColor(HSSFColor.GREY_50_PERCENT.index);

styleBody.setBorderLeft(HSSFCellStyle.BORDER_THIN);

styleBody.setLeftBorderColor(HSSFColor.GREY_50_PERCENT.index);

styleBody.setBorderRight(HSSFCellStyle.BORDER_THIN);

styleBody.setRightBorderColor(HSSFColor.GREY_50_PERCENT.index);

styleBody.setBorderTop(HSSFCellStyle.BORDER_THIN);

styleBody.setTopBorderColor(HSSFColor.GREY_50_PERCENT.index);




//내용 스타일

styleCon.setAlignment (HSSFCellStyle.ALIGN_LEFT);

styleCon.setVerticalAlignment (HSSFCellStyle.VERTICAL_CENTER);


styleCon.setBorderBottom(HSSFCellStyle.BORDER_THIN);

styleCon.setBottomBorderColor(HSSFColor.GREY_50_PERCENT.index);

styleCon.setBorderLeft(HSSFCellStyle.BORDER_THIN);

styleCon.setLeftBorderColor(HSSFColor.GREY_50_PERCENT.index);

styleCon.setBorderRight(HSSFCellStyle.BORDER_THIN);

styleCon.setRightBorderColor(HSSFColor.GREY_50_PERCENT.index);

styleCon.setBorderTop(HSSFCellStyle.BORDER_THIN);

styleCon.setTopBorderColor(HSSFColor.GREY_50_PERCENT.index);




//합계 스타일


stylesum.setAlignment (HSSFCellStyle.ALIGN_LEFT);

stylesum.setVerticalAlignment (HSSFCellStyle.VERTICAL_CENTER);

stylesum.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);// not BackgroundColor

stylesum.setFillForegroundColor(HSSFColor.SKY_BLUE.index);

stylesum.setBorderBottom(HSSFCellStyle.BORDER_THIN);

stylesum.setBottomBorderColor(HSSFColor.GREY_50_PERCENT.index);

stylesum.setBorderLeft(HSSFCellStyle.BORDER_THIN);

stylesum.setLeftBorderColor(HSSFColor.GREY_50_PERCENT.index);

stylesum.setBorderRight(HSSFCellStyle.BORDER_THIN);

stylesum.setRightBorderColor(HSSFColor.GREY_50_PERCENT.index);

stylesum.setBorderTop(HSSFCellStyle.BORDER_THIN);

stylesum.setTopBorderColor(HSSFColor.GREY_50_PERCENT.index);






//------------



//-----------------------------------------------------------------------------------




//1행



objRow = objSheet.createRow((short)0);

objRow.setHeight ((short) 0x300);


objCell = objRow.createCell((short)0);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("제목");

objCell.setCellStyle(styleHd);





//병합에 스타일 주기

for(int i=0;i<8;i++){

objRow = objSheet.createRow((short)1);

objCell = objRow.createCell((short)i);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("");

objCell.setCellStyle(styleSub);



objRow = objSheet.createRow((short)2);

objCell = objRow.createCell((short)i);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("");

objCell.setCellStyle(styleSub);



objRow = objSheet.createRow((short)3);

objCell = objRow.createCell((short)i);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("");

objCell.setCellStyle(styleSub);

}






//상단

objRow = objSheet.createRow((short)1);


objCell = objRow.createCell((short)0);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("구분");

objCell.setCellStyle(styleSub);


objCell = objRow.createCell((short)1);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("A");

objCell.setCellStyle(styleSub);


objCell = objRow.createCell((short)2);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("B");

objCell.setCellStyle(styleSub);


objCell = objRow.createCell((short)3);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("C");

objCell.setCellStyle(styleSub);




objRow = objSheet.createRow((short)2);


objCell = objRow.createCell((short)3);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("a");

objCell.setCellStyle(styleSub);


objCell = objRow.createCell((short)4);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("b");

objCell.setCellStyle(styleSub);





objRow = objSheet.createRow((short)3);


objCell = objRow.createCell((short)4);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("1");

objCell.setCellStyle(styleSub);


objCell = objRow.createCell((short)5);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("2");

objCell.setCellStyle(styleSub);


objCell = objRow.createCell((short)6);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("3");

objCell.setCellStyle(styleSub);


objCell = objRow.createCell((short)7);

objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

objCell.setCellValue("4");

objCell.setCellStyle(styleSub);


//----------------------------------------------------------------------------------------

//길이 설정

objSheet.setColumnWidth((short)0,(short)4500);

objSheet.setColumnWidth((short)1,(short)4000);

objSheet.setColumnWidth((short)2,(short)4000);

objSheet.setColumnWidth((short)3,(short)4000);

objSheet.setColumnWidth((short)4,(short)2500);

objSheet.setColumnWidth((short)5,(short)2500);

objSheet.setColumnWidth((short)6,(short)2500);

objSheet.setColumnWidth((short)7,(short)2500);

//--------------------------------------------------------------------------------------



//내용


 objRow = objSheet.createRow((short)4);

 objRow.setHeight ((short) 0x150);


 objCell = objRow.createCell((short)0);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("A");   //구분

 objCell.setCellStyle(styleBody);


 objCell = objRow.createCell((short)1);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("1");

 objCell.setCellStyle(styleCon);


 objCell = objRow.createCell((short)2);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("2");

 objCell.setCellStyle(styleCon);


 objCell = objRow.createCell((short)3);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("3");

 objCell.setCellStyle(styleCon);


 objCell = objRow.createCell((short)4); //10년

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("4");

 objCell.setCellStyle(styleCon);


 objCell = objRow.createCell((short)5);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("5");

 objCell.setCellStyle(styleCon);


 objCell = objRow.createCell((short)6);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("6");

 objCell.setCellStyle(styleCon);


 objCell = objRow.createCell((short)7);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("7");

 objCell.setCellStyle(styleCon);  

 


 

      

      

//합계

 objRow = objSheet.createRow((short)5);

 objRow.setHeight ((short) 0x150);


 objCell = objRow.createCell((short)0);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("소계");   //구분

 objCell.setCellStyle(stylesum);


 objCell = objRow.createCell((short)1);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("1");

 objCell.setCellStyle(stylesum);


 objCell = objRow.createCell((short)2);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("2");

 objCell.setCellStyle(stylesum);


 objCell = objRow.createCell((short)3);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("3");

 objCell.setCellStyle(stylesum);


 objCell = objRow.createCell((short)4); //10년

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("4");

 objCell.setCellStyle(stylesum);


 objCell = objRow.createCell((short)5);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("5");

 objCell.setCellStyle(stylesum);


 objCell = objRow.createCell((short)6);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("6");

 objCell.setCellStyle(stylesum);


 objCell = objRow.createCell((short)7);

 objCell.setEncoding(HSSFCell.ENCODING_UTF_16);

 objCell.setCellValue("7");

 objCell.setCellStyle(stylesum);


      




fileOut = response.getOutputStream(); 

objWorkBook.write(fileOut);

fileOut.close();

%>








 























Posted by -현's-

댓글을 달아 주세요


●아래 사이트에서 톰켓 이클립스 플러그인 파일을 다운받는다.


http://www.eclipsetotale.com/index.html







●해당 파일을 압춘을 푼 뒤 이클립스 폴더안에 있는 plugin폴더에 복사한다.






●이클립스를 실행하면 상단 메뉴에 고양이 버튼 3개가 나온다.











- 상단 메뉴 Window->Preferences를 클릭한다.









- 왼쪽 Tomcat을 클릭하고 오른쪽에서 톰켓버전, 톰켓 폴더 위치를 지정한 후 ok를 클릭한다.










●3개의 고양이 아이콘 중 왼쪽 버튼을 누르면 톰켓이 실행되고 중간 버튼을 누르면 톰켓이 중지되고 오른쪽 버튼을 누르면 톰켓이 재시작된다.

톰켓이 실행되면 http://localhost:8080 으로 들어가서 아래처럼 나오면 정상적으로 설치가 완료된 것이다.










'프로그래밍 > JSP' 카테고리의 다른 글

poi xlsx 다운  (0) 2013.12.02
jsp poi 엑셀 다운 예제  (0) 2013.11.26
jsp 개발환경 세팅 이클립스 톰켓 플러그인  (0) 2013.10.28
jsp poi 엑셀 다운받기  (0) 2013.09.04
jsp poi 폰트, 스타일 적용  (0) 2013.09.03
jsp poi 기본  (0) 2013.09.02
Posted by -현's-

댓글을 달아 주세요

 

●엑셀 다운받기 예제

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@page import="
org.apache.poi.hssf.usermodel.HSSFCell,
org.apache.poi.hssf.usermodel.HSSFRow,
org.apache.poi.hssf.usermodel.HSSFSheet,
org.apache.poi.hssf.usermodel.HSSFWorkbook ,
org.apache.poi.hssf.util.Region,
java.io.FileOutputStream,
java.util.List,
org.apache.poi.hssf.usermodel.HSSFCellStyle ,
org.apache.poi.hssf.usermodel.HSSFFont,
org.apache.poi.hssf.util.HSSFColor,
java.util.*,
    java.io.*

" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>엑셀 POI 테스트 완료</title>
</head>
<body>

<%

 

 

 

 

String sFileName = "파일이름" + ".xls";
sFileName = new String ( sFileName.getBytes("KSC5601"), "8859_1");


out.clear();
out = pageContext.pushBody();
response.reset();  // 이 문장이 없으면 excel 등의 파일에서 한글이 깨지는 문제 발생.

 

String strClient = request.getHeader("User-Agent");

String fileName = sFileName;

if (strClient.indexOf("MSIE 5.5") > -1) {
 //response.setContentType("application/vnd.ms-excel");
 response.setHeader("Content-Disposition", "filename=" + fileName + ";");
} else {
 response.setContentType("application/vnd.ms-excel");
 response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ";");
}

OutputStream fileOut = null;

 

 

//---------------------------------------------------------------
//엑셀 처리 시작

HSSFWorkbook objWorkBook = new HSSFWorkbook();      //워크북 생성
HSSFSheet objSheet = objWorkBook.createSheet();     //워크시트 생성
HSSFRow objRow = null;        //로우 생성
HSSFCell objCell = null;       //셀 생성


//-----------------------------------------------------------------
//스타일 설정


//스타일 객체 생성
HSSFCellStyle styleHd = objWorkBook.createCellStyle();    //제목 스타일
HSSFCellStyle styleSub = objWorkBook.createCellStyle();   //부제목 스타일
HSSFCellStyle styleBody = objWorkBook.createCellStyle();   //내용 스타일


//제목 폰트
HSSFFont font = objWorkBook.createFont();
font.setFontHeightInPoints((short)15);
font.setBoldweight((short)font.BOLDWEIGHT_BOLD);

//부제목 폰트
HSSFFont font2 = objWorkBook.createFont();
font2.setFontHeightInPoints((short)11);
font2.setBoldweight((short)font.BOLDWEIGHT_BOLD);

 

//제목 스타일에 폰트 적용, 정렬
styleHd.setFont(font);
styleHd.setAlignment(HSSFCellStyle.ALIGN_CENTER);
styleHd.setVerticalAlignment (HSSFCellStyle.VERTICAL_CENTER);

//부제목 스타일 설정

styleSub.setFont(font2);
styleSub.setBorderBottom(HSSFCellStyle.BORDER_THIN);
styleSub.setBottomBorderColor(HSSFColor.BLACK.index);
styleSub.setBorderLeft(HSSFCellStyle.BORDER_THIN);
styleSub.setLeftBorderColor(HSSFColor.BLACK.index);
styleSub.setBorderRight(HSSFCellStyle.BORDER_THIN);
styleSub.setRightBorderColor(HSSFColor.BLACK.index);
styleSub.setBorderTop(HSSFCellStyle.BORDER_THIN);
styleSub.setTopBorderColor(HSSFColor.BLACK.index);
styleSub.setAlignment (HSSFCellStyle.ALIGN_CENTER);
styleSub.setVerticalAlignment (HSSFCellStyle.VERTICAL_CENTER);
styleSub.setWrapText(true);

//내용 스타일 설정
styleBody.setBorderBottom(HSSFCellStyle.BORDER_THIN);
styleBody.setBottomBorderColor(HSSFColor.GREY_50_PERCENT.index);
styleBody.setBorderLeft(HSSFCellStyle.BORDER_THIN);
styleBody.setLeftBorderColor(HSSFColor.GREY_50_PERCENT.index);
styleBody.setBorderRight(HSSFCellStyle.BORDER_THIN);
styleBody.setRightBorderColor(HSSFColor.GREY_50_PERCENT.index);
styleBody.setBorderTop(HSSFCellStyle.BORDER_THIN);
styleBody.setTopBorderColor(HSSFColor.GREY_50_PERCENT.index);
styleBody.setAlignment (HSSFCellStyle.ALIGN_CENTER);
styleBody.setVerticalAlignment (HSSFCellStyle.VERTICAL_CENTER);


//-------------------------------------------------------

//병합
objSheet.addMergedRegion(new Region(0,(short)0,0,(short)4));
objSheet.addMergedRegion(new Region(1,(short)0,1,(short)4));

//1행
objRow = objSheet.createRow((short)0);
objRow.setHeight ((short) 0x200);

objCell = objRow.createCell((short)0);
objCell.setEncoding(HSSFCell.ENCODING_UTF_16);
objCell.setCellValue("공지사항");
objCell.setCellStyle(styleHd);

//2행
objRow = objSheet.createRow((short)1);
objRow.setHeight ((short) 0x90);

objCell = objRow.createCell((short)0);

//길이 설정
objSheet.setColumnWidth((short)0,(short)5000);
objSheet.setColumnWidth((short)1,(short)20000);
objSheet.setColumnWidth((short)2,(short)5000);
objSheet.setColumnWidth((short)3,(short)5000);
objSheet.setColumnWidth((short)4,(short)5000);

 

//-------------------------------------------
//3행
objRow = objSheet.createRow((short)2);
objRow.setHeight ((short) 0x150);

objCell = objRow.createCell((short)0);
objCell.setEncoding(HSSFCell.ENCODING_UTF_16);
objCell.setCellValue("번호");
objCell.setCellStyle(styleSub);

objCell = objRow.createCell((short)1);
objCell.setEncoding(HSSFCell.ENCODING_UTF_16);
objCell.setCellValue("제목");
objCell.setCellStyle(styleSub);

objCell = objRow.createCell((short)2);
objCell.setEncoding(HSSFCell.ENCODING_UTF_16);
objCell.setCellValue("작성자");
objCell.setCellStyle(styleSub);

objCell = objRow.createCell((short)3);
objCell.setEncoding(HSSFCell.ENCODING_UTF_16);
objCell.setCellValue("작성일");
objCell.setCellStyle(styleSub);

objCell = objRow.createCell((short)4);
objCell.setEncoding(HSSFCell.ENCODING_UTF_16);
objCell.setCellValue("조회수");
objCell.setCellStyle(styleSub);

 


out.clear();

out = pageContext.pushBody();

fileOut = response.getOutputStream();
objWorkBook.write(fileOut);
fileOut.close();


 


%>


</body>
</html>

 

 

 

 

 

 

 

'프로그래밍 > JSP' 카테고리의 다른 글

jsp poi 엑셀 다운 예제  (0) 2013.11.26
jsp 개발환경 세팅 이클립스 톰켓 플러그인  (0) 2013.10.28
jsp poi 엑셀 다운받기  (0) 2013.09.04
jsp poi 폰트, 스타일 적용  (0) 2013.09.03
jsp poi 기본  (0) 2013.09.02
jsp 기본 문법 정리4  (0) 2012.03.12
Posted by -현's-

댓글을 달아 주세요

 

poi 폰트, 스타일 적용 예제

 

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="org.apache.poi.* " %>
    <%@page import="org.apache.poi.hssf.usermodel.HSSFSheet,
     org.apache.poi.hssf.usermodel.HSSFWorkbook,
     org.apache.poi.hssf.usermodel.*,
     org.apache.poi.hssf.*,
     java.io.FileOutputStream,
     org.apache.poi.hssf.util.Region,
     org.apache.poi.hssf.util.HSSFColor
    
     " %>
   
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>엑셀 POI 테스트</title>
</head>
<body>

<%

//--------------------------------------------------------------------
//엑셀 처리 시작
HSSFWorkbook objWorkBook = new HSSFWorkbook(); //워크북 생성
HSSFSheet objSheet = objWorkBook.createSheet(); //워크시트 생성

HSSFRow objRow = null;       //행 생성
HSSFCell objCell =null;       //셀 객체 생성

 

//-----------------------------------------------------------------
//스타일 설정


//스타일 객체 생성
HSSFCellStyle styleHd = objWorkBook.createCellStyle();    //제목 스타일
HSSFCellStyle styleSub = objWorkBook.createCellStyle();   //부제목 스타일
HSSFCellStyle styleBody = objWorkBook.createCellStyle();   //내용 스타일


//제목 폰트
HSSFFont font = objWorkBook.createFont();
font.setFontHeightInPoints((short)15);
font.setBoldweight((short)font.BOLDWEIGHT_BOLD);

//제목 스타일에 폰트 적용, 정렬
styleHd.setFont(font);
styleHd.setAlignment(HSSFCellStyle.ALIGN_CENTER);
styleHd.setVerticalAlignment (HSSFCellStyle.VERTICAL_CENTER);

//부제목 스타일 설정
styleSub.setBorderBottom(HSSFCellStyle.BORDER_THIN);
styleSub.setBottomBorderColor(HSSFColor.BROWN.index);
styleSub.setBorderLeft(HSSFCellStyle.BORDER_THIN);
styleSub.setLeftBorderColor(HSSFColor.BROWN.index);
styleSub.setBorderRight(HSSFCellStyle.BORDER_THIN);
styleSub.setRightBorderColor(HSSFColor.BROWN.index);
styleSub.setBorderTop(HSSFCellStyle.BORDER_THIN);
styleSub.setTopBorderColor(HSSFColor.BROWN.index);
styleSub.setAlignment (HSSFCellStyle.ALIGN_CENTER);
styleSub.setVerticalAlignment (HSSFCellStyle.VERTICAL_CENTER);
styleSub.setWrapText(true);

 

 

//내용 스타일 설정
styleBody.setAlignment (HSSFCellStyle.ALIGN_LEFT);
styleBody.setVerticalAlignment (HSSFCellStyle.VERTICAL_CENTER);

 

 

 

 


//----------------------------------------------------------------------

//병합
objSheet.addMergedRegion(new Region(0,(short)0,0,(short)4));
objSheet.addMergedRegion(new Region(1,(short)0,1,(short)4));

//1행
objRow = objSheet.createRow((short)0);
objRow.setHeight ((short) 0x200);

objCell = objRow.createCell((short)0);
objCell.setEncoding(HSSFCell.ENCODING_UTF_16);
objCell.setCellValue("공지사항");
objCell.setCellStyle(styleHd);

//2행
objRow = objSheet.createRow((short)1);
objRow.setHeight ((short) 0x90);

objCell = objRow.createCell((short)0);

//길이 설정
objSheet.setColumnWidth((short)0,(short)5000);
objSheet.setColumnWidth((short)1,(short)20000);
objSheet.setColumnWidth((short)2,(short)5000);
objSheet.setColumnWidth((short)3,(short)5000);
objSheet.setColumnWidth((short)4,(short)5000);

 


//-------------------------------------------
//3행
objRow = objSheet.createRow((short)2);
objRow.setHeight ((short) 0x150);

objCell = objRow.createCell((short)0);
objCell.setEncoding(HSSFCell.ENCODING_UTF_16);
objCell.setCellValue("번호");
objCell.setCellStyle(styleSub);

objCell = objRow.createCell((short)1);
objCell.setEncoding(HSSFCell.ENCODING_UTF_16);
objCell.setCellValue("제목");
objCell.setCellStyle(styleSub);

objCell = objRow.createCell((short)2);
objCell.setEncoding(HSSFCell.ENCODING_UTF_16);
objCell.setCellValue("작성자");
objCell.setCellStyle(styleSub);

objCell = objRow.createCell((short)3);
objCell.setEncoding(HSSFCell.ENCODING_UTF_16);
objCell.setCellValue("작성일");
objCell.setCellStyle(styleSub);

objCell = objRow.createCell((short)4);
objCell.setEncoding(HSSFCell.ENCODING_UTF_16);
objCell.setCellValue("조회수");
objCell.setCellStyle(styleSub);

 


//--------------------------------------------
//내용

 

 

 

 

 

 

//-----------------------------------------------------
//파일 닫기


//objWorkBook.write(response.getOutputStream());

FileOutputStream fs = new FileOutputStream("d:/aa.xls");
objWorkBook.write(fs);
fs.close();
out.println("엑셀 생성 완료");
//fs.close();

 

 

 

%>

dddddddddd

 

 

</body>
</html>

 

 

 

 

 

 

 

 

 


 

'프로그래밍 > JSP' 카테고리의 다른 글

jsp 개발환경 세팅 이클립스 톰켓 플러그인  (0) 2013.10.28
jsp poi 엑셀 다운받기  (0) 2013.09.04
jsp poi 폰트, 스타일 적용  (0) 2013.09.03
jsp poi 기본  (0) 2013.09.02
jsp 기본 문법 정리4  (0) 2012.03.12
jsp 기본 문법 정리3  (0) 2012.03.12
Posted by -현's-

댓글을 달아 주세요

DTD(Document Type Definition) - 웹브라우저가 웹페이지를 동일한 기준에 의해 해석 되도록 문서의 타입을 선언하는 것이다. 이클립스 사용시 파일을 생성하면 이클립스가 자동으로 dtd를 선언해준다.


 

●DTD는 여러가지 종류가 있다. html페이지 제일 위에 선언해야한다. 엄격모드를 사용하는 것이 정확한 웹표준을 따르는 것이지만 우리나라의 브라우저 사용실태를 고려하면 하위 버전의 브라우저에서도 호환되어야 하기 때문에 호환모드를 사용해야 한다.

ex)

html 4.01 Transitional(호환모드) 

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"html://www.w3.org/TR/html4/loose.dtd">

 

html 4.01strict(엄격모드)

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd"> 

 

 

 

Posted by -현's-

댓글을 달아 주세요


●JSP는 HTML문서 사이에 JSP문법코드가 삽입된 형태로 작성된다.



●<%   %> - 스크립트릿, 이 안에 자바 코드 쓸수 있다. 

●<%=   %> - 익스프레션, 자바식 출력

●<%@   %> - 지시자, 웹컨테이너가 jsp 페이지를 처리할 때 필요한 정보를 기술

●<%!    %> - 선언부, 변수선언이나 메서드를 선언

●&{ } - 익스프레션 언어(EL)

●<jsp:~~/>, <c:~~/> - 액션 태그




●서블릿
- 장점 : 복잡한 프로그램 구현에 적합하다. 컴파일 결과만 설치해도 되므로 소스코드 유출 보호
- 단점 : HTML 문서의 디자인이 바뀔때 마다 서블릿 클랫를 수정/컴파일/설치 해야하고 웹서버를 재기동하는 일을
           되풀이 해야한다. 설치과정이 복잡하다.


●JSP
- 장점 : HTML중심의 코드구조이므로 디자인 작업에 바로 사용가능하다. 그리고 그 일이 끝나면 바로 프로그램
           로직을 고칠수 있다. 설치 과정이 간단하다
- 단점 : 프로그램 로직이 복잡할 경우 자바코드의 논리적구조를 알아보기가 힘들다. 소스코드가 공개되며,
            프로그래머가 아닌 다른 사람이 소스코드를 만져서 손상시킬 위험성이 있다.



●프로그램의 복잡한 로직을 구사하는 코드는 서블릿 클래스 안에 기술하고 프로그램의 결과를 보여주는 HTML중심의 코드만 JSP페이지안에 기술하는게 좋다.



●실무에서는 JSP페이지에 스크립팅 요스는 아예 쓰지않고 익스프레션언어(EL)와 액션만 사용하는 방법을 주로 쓴다.




●<%@   %>
- 지시자, 웹컨테이너가 JSP페이지를 서블릿 클래스로 변환할 때 필요한 여러가지 정보들은 기술하기 위해 사용하는 문법이다.
-지시자 종류
①<%@ page  어트리뷰트목록  %>

②<%@ include  어트리뷰트목록 %>

③<%@ taglib  어트리뷰트목록  %>




●page 지시자 - jsp 전체에 적용되는 정보를 기술한다.
ex)
<%@ page  contentType = "text/html; charset = euc-kr"  %>
<%@ page  import = "java.util.*" %>




●include 지시자
-  다른 페이지를 불러다 현재 jsp페이지의 일부로 만들기 위해 사용, 현재 jsp페이지를 기준으로 상대적인 url 사용
ex)
<%@ include  file = "Today.jsp" %>




●taglib 지시자 - 액션을 사용할 때 이용한다.
ex)
<%@ taglib  prefix = "c" uri = http://java.sun.com/jsp/jstl/core %>




●html 주석
<!--    주석내용   -->


●jsp 주석
<%--   주석내용   --%>






●jsp 내장객체
request
response
out
application
config
pageContext
session
page
exception





'프로그래밍 > JSP' 카테고리의 다른 글

jsp 기본 문법 정리4  (0) 2012.03.12
jsp 기본 문법 정리3  (0) 2012.03.12
jsp 기본 문법 정리2  (0) 2012.03.11
jsp 기본 문법 정리1  (0) 2012.03.11
JSP 프로젝트 시작하기 & DB 연결하기  (0) 2012.03.10
JSP 이클립스 개발 환경 구축(세팅)  (0) 2012.03.10
Posted by -현's-

댓글을 달아 주세요


●DB연결하기

①이클립스 하단 Data Source Explorer에서 Database Connetions를 오른쪽 버튼클릭하고 new를 누른다




②연결할 DB를 선택한다.




③아래 그림에서 빨간색 네모안에 있는 버튼을 클릭한다.




④Name/Type에서 DB 버전을 선택한다.





⑤JAR List 에서 목록을 선택 후 먼저 'Remove Jar/Zip'버튼을 눌러 없엔다. 그리고 'Add JAR/Zip'버튼을 눌러 해당 버전에 맞는 jar를 추가해 준다.





⑥Properties에서 각 Value값을 설정해준다. 설정하고 ok버튼을 누른다.





⑦Test Connection을 누르면 제대로 연결이 되었는지 안되었는지 확인할수 있다. 제대로 연결이 되었으면 finish버튼을 누른다.






●프로젝트 시작하기

①Project name에 임의의 이름을 적은후 finish버튼을 누른다.





②새 프로젝트를 열면 습관적으로 Build Path를 지정해 줘야한다. 프로젝트이름에 오른쪽 클릭후 아래 그림처럼 Configue Build Path를 선택한다.



③상단 Source에 들어간다. 오른쪽 밑에 Browse선택후 WEP-INF밑에 'classes'라는 폴더를 생성한다. classes선택후 ok버튼을 누른다.




④ok버튼을 누른다.




'프로그래밍 > JSP' 카테고리의 다른 글

jsp 기본 문법 정리4  (0) 2012.03.12
jsp 기본 문법 정리3  (0) 2012.03.12
jsp 기본 문법 정리2  (0) 2012.03.11
jsp 기본 문법 정리1  (0) 2012.03.11
JSP 프로젝트 시작하기 & DB 연결하기  (0) 2012.03.10
JSP 이클립스 개발 환경 구축(세팅)  (0) 2012.03.10
Posted by -현's-

댓글을 달아 주세요


1. JDK 설치하기


2. 환경변수 설정하기

3. 톰캣 설치하기


4. 이클립스 설치하기


5. 톰캣과 이클립스 연동

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



1. JDK 설치하기

http://java.sun.com 에 들어간다

② 상단 Download에서 java se, jdk를 다운 받아 설치한다.



2. 환경변수 설정하기

①내 컴퓨터 -> 시스템 속성 -> 고급 -> 환경변수

 



②변수이름 Path에다가 jdk설치경로에 있는 bin디렉토리 경로명을 제일 앞에 추가 하고 ' ;(세미콜론) '을 붙여준다.

 



③잘 되었는지 확인하려면 cmd 창에서 'javac -version' 을 입력해본다.






3. 톰캣 설치하기

http://tomcat.apache.org  에 들어간다.

② Download 에서 톰켓을 다운로드한다. 32bit인지 64bit인지는 내컴퓨터-속성에 가면 알수있다.



③ 압축을 푼다





4. 이클립스 설치하기

www.eclipse.org 에 들어간다.

②Downloads 에서 java ee 버전을 다운 받는다.



③ 압축을 푼다




5. 톰캣과 이클립스 연동

①이클립스 하단 server에 오른쪽 버튼 클릭후 new->server선택한다.




②본인이 다운받은 아파치 톰켓 서버를 선택한다.




③본인이 다운받아 압축을 푼 톰켓 폴더를 지정한다.




④next->finish를 선택한다.




'프로그래밍 > JSP' 카테고리의 다른 글

jsp 기본 문법 정리4  (0) 2012.03.12
jsp 기본 문법 정리3  (0) 2012.03.12
jsp 기본 문법 정리2  (0) 2012.03.11
jsp 기본 문법 정리1  (0) 2012.03.11
JSP 프로젝트 시작하기 & DB 연결하기  (0) 2012.03.10
JSP 이클립스 개발 환경 구축(세팅)  (0) 2012.03.10
Posted by -현's-

댓글을 달아 주세요


-html 기본형식
<html>
   <head>
      <title>문서제목></title>
   </head>
   <body>
      내용    <!-- 주석 -->
   </body>
<html>


-<h숫자> 태그
주로 제목,글자표시할때 사용

 




-<br>태그
break line, 강제줄바꿈



-<center>태그
가운데 정렬




-<font color="색영문이름 or #rgb색상코드>내용</font>태그
글자색 지정



-<font size="숫자">내용</font>태그
글자크기 지정






 -<p>태그
paragraph, 문단나누기, <br>태그를 두번쓴것과 같은 효과, <p>태그는 여러번써도 한번사용한것과 같다

 

Posted by -현's-

댓글을 달아 주세요