이번시간에는 jexcelapi를 사용하여 엑셀파일을 만들어 보겠습니다.


먼저 아래의 페이지에서 jexcelapi를 다운로드합니다.

[jexcelapi다운로드페이지]:http://www.andykhan.com/jexcelapi/download.html


압축을 풀면 jxl.jar파일이 있습니다.

jxl.jar을 추가합니다.


[샘플소스]

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.Border;
import jxl.format.BorderLineStyle;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
 
public class ExcelWriteSample {
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
 
		ExcelWriteSample sample = new ExcelWriteSample();
		try {
			sample.excelWrite(new File("D:\\ExcelWriteSample.xls"), sample.getData());
		} catch (WriteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
 
	}
 
	/**
	 * 
	 * @param file
	 * @param data
	 * @throws IOException
	 * @throws WriteException
	 */
	public void excelWrite(File file, List<Map<String, Object>> data)
			throws IOException, WriteException {
 
		// WorkBook 생성
		WritableWorkbook wb = Workbook.createWorkbook(file);
 
		// WorkSheet 생성
		WritableSheet sh = wb.createSheet("테스트", 0);
		// 열넓이 설정 (열 위치, 넓이)
		sh.setColumnView(0, 10);
		sh.setColumnView(1, 20);
		sh.setColumnView(2, 20);
		sh.setColumnView(3, 20);
 
		// 셀형식
		WritableCellFormat textFormat = new WritableCellFormat();
 
		// 생성
		textFormat.setAlignment(Alignment.CENTRE);
		// 테두리
		textFormat.setBorder(Border.ALL, BorderLineStyle.THIN);
 
		int row = 0;
 
		// 헤더
		Label label = new jxl.write.Label(0, row, "이름", textFormat);
		sh.addCell(label);
 
		label = new jxl.write.Label(1, row, "주소", textFormat);
		sh.addCell(label);
 
		label = new jxl.write.Label(2, row, "전화번호", textFormat);
		sh.addCell(label);
 
		label = new jxl.write.Label(3, row, "비고", textFormat);
		sh.addCell(label);
 
		row++;
 
		for (Map<String, Object> tem : data) {
 
			// 이름
			label = new jxl.write.Label(0, row, (String) tem.get("name"),
					textFormat);
			sh.addCell(label);
			// 주소
			label = new jxl.write.Label(1, row, (String) tem.get("addr"),
					textFormat);
			sh.addCell(label);
			// 전화번호
			label = new jxl.write.Label(2, row, (String) tem.get("tel"),
					textFormat);
			sh.addCell(label);
			// 비고
			label = new jxl.write.Label(3, row, (String) tem.get("etc"),
					textFormat);
			sh.addCell(label);
 
			row++;
		}
 
		// WorkSheet 쓰기
		wb.write();
 
		// WorkSheet 닫기
		wb.close();
 
	}
 
	/**
	 * 출력할 데이터
	 * 
	 * @return
	 */
	public List<Map<String, Object>> getData() {
 
		List<Map<String, Object>> data = new ArrayList<Map<String, Object>>();
 
		Map<String, Object> map = new HashMap<String, Object>();
 
		map.put("name", "이기자");
		map.put("addr", "서울시 강북");
		map.put("tel", "010-XXXX-XXXX");
		map.put("etc", "");
 
		data.add(map);
 
		map = new HashMap<String, Object>();
		map.put("name", "김철순");
		map.put("addr", "서울시 강남");
		map.put("tel", "010-XXXX-XXXX");
		map.put("etc", "");
 
		data.add(map);
 
		map = new HashMap<String, Object>();
		map.put("name", "박순심");
		map.put("addr", "서울시 서초");
		map.put("tel", "010-XXXX-XXXX");
		map.put("etc", "");
 
		data.add(map);
 
		map = new HashMap<String, Object>();
		map.put("name", "강기남");
		map.put("addr", "서울시 송파");
		map.put("tel", "010-XXXX-XXXX");
		map.put("etc", "");
 
		data.add(map);
 
		return data;
 
	}
}


위 소스는 데이터를 만들고 만든 데이터를 엑셀에 씁니다.

샘플소스를 실행시키면 D드라이브에 ExcelWriteSample.xls파일이 생성됩니다.

파일을 열어보면 아래와 같습니다.

[실행결과]

excelSample.jpg



이번시간은 맛보기로 엑셀파일 쓰기에 대한 간단 샘플을 만들어 보았습니다.

eclipse프로젝트를 export한 파일을 압축하여 첨부하였습니다.


다음 시간에는 엑셀 파일 읽기와 좀더 자세한 기능에 대해 알아보도록 하겠습니다.


감사합니다.