강좌 & 팁
글 수 2,412
2012.10.21 18:18:06 (*.52.177.29)
52592
이번시간에는 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파일이 생성됩니다.
파일을 열어보면 아래와 같습니다.
[실행결과]
이번시간은 맛보기로 엑셀파일 쓰기에 대한 간단 샘플을 만들어 보았습니다.
eclipse프로젝트를 export한 파일을 압축하여 첨부하였습니다.
다음 시간에는 엑셀 파일 읽기와 좀더 자세한 기능에 대해 알아보도록 하겠습니다.
감사합니다.