본문 바로가기

Dev/Orvercome 3sec memory

jxl 사용해서 Excel 출력하기

728x90

1. 워크북 만든다.
2. 워크북 안에 시트를 생성한다.
3. 쉬트 안에 원하는 데이터를 한 셀, 한 셀 넣는다.
(여기에는 텍스트 데이터를 삽입하는 Label 클래스만 사용했으나 Number  형도 있고 여러가지가 있은 것 으로 보인다. 필요에 따라 알아보고 사용하도록 한다.)

import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

......

List<AgreeMailModel> dataList = null;
dataList = acceptService.getMailingList(1, count,getAgreeYN());

/* 엑셀 파일 생성 */
String filePath ="/excel/";

File file = new File(filePath+getText("agree.userList.excelFile"));
if(file.exists())
file.delete();
file = new File(filePath);
if(!file.exists())
file.mkdirs();
file = new File(filePath+getText("agree.userList.excelFile"));
WritableWorkbook workbook = Workbook.createWorkbook(file); //워크북생성
WritableSheet sheet = workbook.createSheet("LIST",0);    //시트 생성
/* 엑셀파일 첫번째 줄에 나올 컬럼 이름 */
String[] arrLabel = {"이메일주소","어플리케이션이름","사용동의 여부","동의일시","동의자IP"};
for(int i=0; i<arrLabel.length; i++){
Label label = new Label(i, 0, arrLabel[i]);
sheet.addCell(label);
}
/* 엑셀 파일에 데이터 넣기 */
for(int j=1; j<=dataList.size(); j++){
AgreeMailModel agreeMailModel = dataList.get(j-1);

String[] arrData = {agreeMailModel.getEmailAdress(),agreeMailModel.getContentsTitle(),agreeMailModel.getAgreeYN(),agreeMailModel.getAgreeDate(), agreeMailModel.getClientIp()};

for(int d=0; d < arrData.length; d++){
 //텍스트데이터 삽입 시 Label 클래스를 사용한단다.  또 다른게 있을 지도 모른다. 이건 나중에 찾아봐야 할 듯.
Label label = new Label(d, j, arrData[d]);
sheet.addCell(label);
    }
}
workbook.write();
workbook.close();
....